使用iOS instagram登录的https PHP / MySql Web服务

我想把我的想法包扎起来.我想创建一个从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数据(例如用户的帖子,朋友列表等).如果要这样做,则不应假定令牌有效,因为它可能会过期,因此您应该处理令牌过期并提供一种方法用户再次认证.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...