在完成第三步Instagram授权后,这一步非常简单,我不会再讲解它,因为你的问题是如何将Instagram数据与你的数据库集成,你应该收到以下json:
{
"access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
"user": {
"id": "1574083",
"username": "snoopdogg",
"full_name": "Snoop Dogg",
"profile_picture": "..."
}
}
我可以帮助您进行翻译。以下是需要翻译的内容:
你对数据的处理方式是架构问题:
1)用户可以通过Instagram或常规用户名/密码进行授权
创建一个用户表,其中包含密码字段和Instagram用户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进行身份验证,您应该:
- 查找您的用户表,寻找Instagram API返回的相同instagram_userid的行。
- 如果instagram_userid已经存在,则应立即在您的应用程序中对用户进行身份验证(例如,使用SESSIONS / COOKIES,即您一生中一直使用的常规方式)。
- 如果instagram_userid不存在,则应创建一个用户行,并使用Instagram API返回的用户名进行身份验证。
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进行身份验证时,您应该在用户表中搜索具有与Instagram API返回的相同ID的行。
- 如果该行存在,则在您的应用程序中对该用户进行身份验证。
- 如果该行不存在,请创建它并对用户进行身份验证。
账户合并
如果您的应用程序处理用户名/密码验证和其他身份验证提供程序,您应该预期用户可能会忘记他使用Instagram Auth通过您的应用程序注册,并尝试通过用户名/密码进行验证。 如果发生这种情况,您可以提供一种合并帐户的方法,而不是复制它。 例如,如果用户的Instagram电子邮件地址作为用户名存在于您的数据库中,则应使用instagram api数据更新此行,而不是假设它是新帐户。 这样,现在您的用户可以使用usuername / password和Instagram进行身份验证。
访问令牌
Instagram访问令牌已存储,但未使用。 为什么? 因为它将用于获取Instagram数据,例如用户的帖子,朋友列表等。 如果您想这样做,您不应假定令牌有效,因为它可能会过期,因此您应处理令牌过期并提供一种方式让用户重新进行身份验证。