OAuth 2.0开发文档

来自Flyme开放平台
2016年5月10日 (二) 17:22Appadmin讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

说明

OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。

接入步骤

Step1: 申请接入,获取client_id和client_secret,等待审核;
Step2:开发应用/网站;
Step3:根据实际情况选择client-side或者server-side。(注:client-side只支持少数权限申请);
Step4:通过用户登录验证和授权,获取Access Token;
Step5:通过Access Token获取用户的校验信息;
Step6:调用OpenAPI相关接口,来请求访问或修改用户授权的资源。

调用方式

client side

client-side是OAuth2.0认证的一种模式,又称User-Agent Flow;
适用于需要通过客户端访问的方式,例如需要通过浏览器的javascript代码,或者电脑/移动终端上的客户端访问时。 其授权验证流程详见:OAuth2.0协议草案V21的4.2节
请求方法:
GET https://open-api.flyme.cn/oauth/authorize

请求参数

参数 必选 字段说明
response_type true 授权类型,此值固定为“token”。
client_id true 分配给授权方的的client_id
redirect_uri true 成功授权后的回调地址,必须是注册client_id时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。
scope true 请求用户授权时向用户显示的可进行授权的列表。一个应用申请时默认分配的scope为:uc_basic_info
state true client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。

返回说明
1. 如果用户成功登录并授权,则会跳转到指定的回调地址,并在URL后加“#”号,带上Access Token以及expires_in,open_id等参数。如果请求参数中传入了state,这里会带上原始的state值。如果redirect_uri地址后已经有“#”号,则加“&”号,带上相应的返回参数。
如:#open_id=xxxxxxxxxxx&access_token=************************&expires_in=360000&state=callbackstate

server side

构造请求授权地址,获取Authorization Code:

GET https://open-api.flyme.cn/oauth/authorize

请求参数:

参数 必须 字段说明
response_type true 授权类型,此值固定为“code”。
client_id true 分配的client_id
redirect_uri true 成功授权后的回调地址,必须是注册client_id时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode。
scope true 请求用户授权时向用户显示的可进行授权的列表。一个应用申请时默认分配的scope为:uc_basic_info
state true client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。

示例:
https://open-api.flyme.cn/oauth/authorize?response_type=code&client_id=[YOUR_CLIENTID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]
如果用户授权后,则成功跳转到指定的redirect_uri,并跟上Authorization Code(注意此code会在数分钟内过期)。 redirect_url?code=80a552e4affa418d9307c8050e8e38a0&state=stateabc


通过Authorization Code获取Access Token 请求:POST https://open-api.flyme.cn/oauth/token

请求参数:

参数 必须 字段说明
grant_type true 此处固定为:authorization_code
client_id true 分配给client_id。
client_secret true 分配给client_secret。
code true 请求用户授权时向用户显示的可进行授权的列表。(注:一个code只可以使用一次对access_token的获取,不管成功与否)
redirect_uri true 此步骤的resirect_uri一定要和获取code时所传递的redirect_uri保持一致,需要将url进行URLEncode
state true client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。


返回:

参数 字段说明
access_token 受信访问令牌
token_type 授权类型,此值固定为“bearer”。
refresh_token 刷新token,用于在access_token过期的情况下再取到一个access_token
expires_in token有效果时长(单位:秒)
scope token访问能力
open_id Flyme用户对应的唯一ID


校验access_token

GET/POST https://open-api.flyme.cn/v2/check
请求参数:

参数 必须 字段说明
access_token true 受信访问令牌

返回:

字段 字段说明
code
状态码 状态码说明
200 正确返回,从value中取出返回值。
500 系统内部错误
100002 access_token过期
value
参数 字段说明
expired_at access_token的过期时间戳(如:1433075493508)
open_id 授权用户对应的唯一KEY
scope token的能力列表
client_id 授权的client_id
message code非200情况下系统提示信息
redirect 保留字段

注意:
服务端正常情况下需要校验client_id和scope.

技术相关请点击:
Flyme账号接入技术文档
Flyme账号接入申请流程

导航菜单