使用iOS Instagram登录的https PHP/MySQL Web服务

3
我想要创建一个能够从ios/ android应用程序访问数据库的Web服务。现在我希望用户能够通过Instagram API登录到该应用中。
但我还有些困惑,不知道两者如何联系起来。显然第一步是使用Instagram登录。那么接下来该做什么呢?我想将收到的用户信息(例如至少用户名/ID)与其他一些非Instagram信息(例如位置)保存到数据库中,并确保安全性。我能否使用Instagram token实现此目的?我在这个过程中有些卡住了...
2个回答

3
为了达到你想要的功能,最简单的方法是使用Rest WebService。通过这个WebService,你的iOS和Android应用程序都可以连接并发送/获取数据。你的WebService应该负责管理所有数据,保存或从数据库中获取信息,并且也可以负责用户认证。为了与你的WebService通信,你的应用程序可以使用JSON。因此,你应该学习如何发送和解析JSON。祝好运!有用的链接如下:Instagram的API在Android应用程序中集成Instagram的教程更新 为了将Instagram用户与你的数据库相关联,你可以使用提供的用户ID。
{
    "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
    "user": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "..."
    }
}

请参考:Instagram认证


谢谢。我明白了。只是我不知道如何将Instagram登录与我的数据库相交。假设我使用Instagram登录,它会给我一些来自Instagram的数据。从那些信息中,我需要保存什么到我的数据库中,以便始终与Instagram和我的数据库有关联? - SunnySonic
是的,您可以像用户登录名或电子邮件一样使用,并将其用作唯一的登录字段。使用此类信息或不可变量生成密码的某些哈希值。 - Marco

1

在完成第三步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进行身份验证,您应该:
  1. 查找您的用户表,寻找Instagram API返回的相同instagram_userid的行。
  2. 如果instagram_userid已经存在,则应立即在您的应用程序中对用户进行身份验证(例如,使用SESSIONS / COOKIES,即您一生中一直使用的常规方式)。
  3. 如果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)
 );
  1. 每当用户通过Instagram API进行身份验证时,您应该在用户表中搜索具有与Instagram API返回的相同ID的行。
  2. 如果该行存在,则在您的应用程序中对该用户进行身份验证。
  3. 如果该行不存在,请创建它并对用户进行身份验证。

账户合并

如果您的应用程序处理用户名/密码验证和其他身份验证提供程序,您应该预期用户可能会忘记他使用Instagram Auth通过您的应用程序注册,并尝试通过用户名/密码进行验证。 如果发生这种情况,您可以提供一种合并帐户的方法,而不是复制它。 例如,如果用户的Instagram电子邮件地址作为用户名存在于您的数据库中,则应使用instagram api数据更新此行,而不是假设它是新帐户。 这样,现在您的用户可以使用usuername / password和Instagram进行身份验证。

访问令牌

Instagram访问令牌已存储,但未使用。 为什么? 因为它将用于获取Instagram数据,例如用户的帖子,朋友列表等。 如果您想这样做,您不应假定令牌有效,因为它可能会过期,因此您应处理令牌过期并提供一种方式让用户重新进行身份验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接