instagram第三方登录

instagram目前好像在国内还不是用的很广泛。

其获取instagram的数据有两种方式:

  1. 获取公共热点图片不需要用户认证,只需要将你申请的client_id发送到instagram即可。

  2. 获取用户相关数据,需要通过instagram认证之后所颁发的access_token.

在第二种方式下,如何获取access_token呢?
首先注册开发者账号instagram Api开发者官网获取CLIENT ID

1.第一步:将用户引导至我们的授权网址。跳转到ins的网站

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

注意:您可以提供可选的范围参数,以请求“基本”权限范围之外的其他权限。详细了解范围。

注意:您可以提供可选的状态参数以执行特定于服务器的状态。例如,您可以使用它来防止CSRF问题。

此时,我们向用户显示一个登录屏幕,然后是一个确认屏幕,用于授予您的应用访问其Instagram数据的权限

2.第二步:从Instagram接收重定向
用户授权您的应用程序后,我们会向您的redirect_uri发出重定向,并在第3步中使用代码参数。

http://your-redirect-uri?code=CODE

请注意,重定向URI的主机和路径组件必须与您注册的redirect_uri完全匹配(包括尾部斜杠)。如果需要动态改变行为,还可以在提供的redirect_uri中包含其他查询参数。例子:

已注册的重定向URI REDIRECT_URI参数传递给/ AUTHORIZE 有效?
http://yourcallback.com/ http://yourcallback.com/
http://yourcallback.com/ http://yourcallback.com/?this=that
http://yourcallback.com/?this=that http://yourcallback.com/ 没有
http://yourcallback.com/?this=that http://yourcallback.com/?this=that&another=true
http://yourcallback.com/?this=that http://yourcallback.com/?another=true&this=that 没有
http://yourcallback.com/callback http://yourcallback.com/ 没有
http://yourcallback.com/callback http://yourcallback.com/callback?type=mobile

如果用户拒绝您的批准请求,我们将使用以下参数将用户重定向到您的redirect_uri:

错误:access_denied

error_reason:user_denied

error_description:用户拒绝了您的请求

http://your-redirect-uri?error=access_denied&error_reason=
user_denied&error_description=The+user+denied+your+request

在这种情况下,您有责任优雅地失败并向您的用户显示相应的错误消息
第三步:请求access_token
现在,您需要将上一步中收到的代码交换为访问令牌。为了进行此交换,您只需将此代码以及一些应用程序标识参数POST到我们的access_token端点。这些是必需的参数:

client_id:您的客户端ID
client_secret:你的客户秘密
grant_type:authorization_code是当前唯一支持的值
redirect_uri:您在授权请求中使用的redirect_uri。注意:这必须与授权请求中的值相同。
代码:您在授权步骤中收到的确切代码。
这是一个示例请求:

curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token

如果成功,此调用将返回一个整齐打包的OAuth令牌,您可以使用该令牌对API进行经过身份验证的调用。我们还包括刚刚为您方便验证的用户:

{
    "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
    "user": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "..."
    }
}

客户端(隐式)身份验证
如果您正在构建一个没有服务器组件的应用程序(例如纯粹的javascript应用程序),您会注意到无法完成上述第三步以接收您的access_token而无需将密钥存储在客户端上。您永远不应将client_id密钥传递或存储到客户端。对于这些情况,存在隐式认证流程。

第一步:将用户引导至我们的授权网址

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

此时,我们向用户显示一个登录屏幕,然后是一个确认屏幕,在该屏幕上,他们授予您应用访问其Instagram数据的权限。请注意,与显式流不同,此处的响应类型为“token”。

第二步:通过URL片段接收access_token
一旦用户通过身份验证然后授权您的应用程序,Instagram就会使用url片段中的access_token将它们重定向到您的redirect_uri。它看起来像这样:

http://your-redirect-uri#access_token=ACCESS-TOKEN

只需从URL片段中获取access_token,就可以了。如果用户选择不授权您的应用程序,您将收到与显式流程中相同的错误响应

猜你喜欢

转载自blog.csdn.net/qq_38402659/article/details/89705419