易信开放平台

还没帐号?

网站Oauth接入新手指南

概述

网站接入是易信针对第三方网站提供的社会化网络接入方案。接入易信让您的网站支持用易信帐号登录,让用户方便的分享网站内容、共享好友圈信息。

1. 准备

1. 如果您没有易信账户,请下载易信客户端,并注册一个易信帐号。
2. 使用易信帐号登录开放平台,转到应用管理页面,添加一个新应用
3. 填写你的应用资料(Android平台IOS平台可以留空,服务器回调地址为您的服务器接收Authorization Code地址),完成后保存,提交审核(资料不全的应用无法使用Oauth接入) ,你会获得一个AppID(等同于下文中的client_id)。

2. 授权流程

以下流程以测试用AppID(client_id): yxbbd0e8b3dce64e02bab42437becc4384 AppSecret:5a1db5830047b4a为例。
若开发者想使用自己的应用来体验易信OAuth2.0,可以在易信开放平台创建应用,注册应用后便可以获得AppID 和 AppSecret。

1. 访问OAuth授权页面

你的网站或者web应用需要调用用户的易信相关信息时获得用户授权时,需要将用户浏览器重定向到易信开放平台OAuth授权页面

https://open.yixin.im/oauth/authorize?response_type=code&client_id=yxbbd0e8b3dce64e02bab42437becc4384

相关附带参数请参与以下authorize接口说明

如果用户已经在易信开放平台授权页登录则直接至授权页面,否则用户需要先登录 登录授权页面

如果用户已经登录,需要在授权页面决定是否同意授权 授权页面

2. 用户授权

用户点击同意授权后,易信OAuth授权页面将自动重定向到你在易信开放平台提交应用时填写的回调redirect_uri。

如果未填写回调redirect_uri,默认为http://open.yixin.im/resource/oauth2_callback.html

正确授权之后你的服务器或者你网站网页的浏览器端脚本会接收到易信授权服务器通过URL方式传给你的code参数。以上述测试AppID为例,易信授权服务器将会定向到类似
http://open.yixin.im/resource/oauth2_callback.html?code=Hb7QXO的地址。

如果用户拒绝授权或者授权失败,易信授权服务器将会定向到类似
http://open.yixin.im/resource/oauth2_callback.html?error=access_denied&error_description=User+denied+access。

3. Authorization Code换取Access Token

你的服务器或程序解析上述第二步{redirect_uri}?code=****,之后将获取到code参数值 code

得到code之后,你需要尽快调用Access Token接口换取token,得到token之后你将可以使用易信相关API(具体参见易信开放平台API)。

code不能重复使用,一旦使用code获取access_token后code即刻失效。如果重新请求code,之前获取的access_token也将失效,必须使用新的code重新获取。

Access Token接口参数说明

3. 相关接口

1. 请求用户授权(用户授权页)

Get https://open.yixin.im/oauth/authorize

请求参数
参数字段 必选 说明
client_id yes 申请应用时分配的AppId
response_type yes 要求响应的类型,填code
state no 随机的字符串
redirect_uri no 用户授权后,返回到第三方应用的地址。如果你在易信开放平台提交应用时填写了自己的回调地址,此处你传参时需要能够匹配你填写的地址中的域名。(完整的域名,yixin.im的连接,只能匹配yixin.im的连接。在开放平台填写多个回调地址时,此处的参数需要是你回调地址列表中的一个)。该参数留空则使用注册的回调地址

2. 获取Access Token

接口地址

Post https://open.yixin.im/oauth/token

请求参数
参数字段 必选 说明
client_id yes 申请应用时分配的AppId
client_secret yes 申请应用时分配的AppSecret
grant_type yes 授权类型,当前该参数值设置为字符串"authorization_code"即可
code yes Authorization Code
redirect_uri no 请求用户授权时,如果填写了redirect_uri则获取token时候必须填写相同的redirect_uri。如果没有填写,则不传递此字段
返回结果

{ "access_token": "1D45T7ofpx", "refresh_token": "723YU6x8qxp", "expires_in": 3600 }

返回字段说明
参数字段 类型 说明
access_token String access_token
refresh_token String refresh_token
expires_in int access_token 的过期时间,单位秒

3. 通过Refresh Token获取Access Token

接口地址

Post https://open.yixin.im/oauth/token

请求参数
参数字段 必选 说明
client_id yes 申请应用时分配的AppId
client_secret yes 申请应用时分配的AppSecret
grant_type yes 授权类型,当前该参数值设置为字符串"refresh_token"即可
refresh_token yes refresh token
返回结果

{ "access_token": "1D45T7ofpx", "refresh_token": "723YU6x8qxp", "expires_in”: 3600 }

返回字段说明
参数字段 类型 说明
access_token String access_token
refresh_token String refresh_token
expires_in int access_token 的过期时间,单位秒

异常

异常返回:{"error":"invalid_token","error_description":"Invalid access token: 9a4471bb-2c82-46c8-8dd7-4aaddaca6d37"}

异常 描述
invalid_request 参数不正确
invalid_client 客户端未找到
invalid_grant 使用code,或者refresh token换取token时,数据不正确
unsupported_grant_type 不支持的授权类型
invalid_scope 不支持的授权域
invalid_token 使用accessToken访问是,token不正确
redirect_uri_mismatch 获得code或者使用code换token时,重定向地址不匹配
unsupported_response_type 不支持的response_type
access_denied 拒绝访问