我想把我的想法包扎起来.我想创建一个从ios / android应用程序访问数据库的Web服务.现在,我希望用户能够通过Instagram API登录该应用程序.
我对他们如何联系在一起感到困惑.显然,第一步是使用Instagram登录.那我该怎么办?我想将收到的用户信息(至少是用户名/ ID)与其他非Instagram信息(例如位置)一起保存到数据库中.所有这些都以安全的方式进行.我可以为此使用instagram令牌吗?我在这个过程上有点卡住…
解决方法:
在完成步骤3 Instagram Autorization之后,这非常简单,由于您要问的是如何将Instagram数据与您的数据库集成,因此我不会谈论它,您应该收到以下json:
{
"access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
"user": {
"id": "1574083",
"username": "snoopdogg",
"full_name": "Snoop Dogg",
"profile_picture": "..."
}
}
您如何处理数据是一个体系结构问题:
1)您的用户可以通过instagram或常规的用户名/密码进行授权
创建一个同时具有密码字段和instagram user_id的用户表:
您的用户表可能类似于:
CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL ,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) DEFAULT NULL,
instagram_userid INT DEFAULT NULL,
instagram_accesstoken VARCHAR(255) DEFAULT NULL,
PRIMARY KEY(id)
);
每当用户通过Instagram进行身份验证时,您都应该:
>查找您是否使用table与instagram api返回的instagram_userid相同的行.
>如果instagram_userid已经存在,您应该立即在您的应用程序中对您的用户进行身份验证(例如,使用SESSIONS / COOKIES,即您一生的惯用方式).
>如果instagram_userid不存在,则应创建一个用户行,并使用Instagram API返回的用户名.同时使用SESSION验证此用户.
2)Instagram是您进行身份验证的唯一用户选择
然后,您应该只创建一个用户表,该表仅是instagram API返回的镜像.您可以将instagram_userid当作您的主键:
CREATE TABLE users (
username VARCHAR(255) NOT NULL,
instagram_userid INT DEFAULT NULL,
instagram_accesstoken VARCHAR(255) DEFAULT NULL,
PRIMARY KEY(instagram_userid)
);
>每当用户通过Instagram API进行身份验证时,您都应该在用户表中搜索与ID相同的行.
>如果该行存在,请在您的应用程序中对该用户进行身份验证.
>如果该行不存在,请创建该行并验证用户身份.
账户合并
如果您的应用程序既处理用户名/密码身份验证,也可能处理其他身份验证提供程序,则您应该期望用户可能忘记了他使用let方式Instagram Auth通过您的应用程序注册,并尝试通过用户名/密码进行验证.如果发生这种情况,您可以提供一种合并帐户的方法,而不是复制帐户.例如,如果用户Instagram电子邮件以用户名的身份存在于您的数据库中,则应使用instagram api数据更新此行,而不是假设其为新帐户.这样,您的用户现在可以使用usuername / password和Instagram进行身份验证.
访问令牌
instagram访问令牌已存储,但未使用.为什么?因为它会用于获取instagram数据(例如用户的帖子,朋友列表等).如果要这样做,则不应假定令牌有效,因为它可能会过期,因此您应该处理令牌过期并提供一种方法给用户再次认证.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。