准备工作
在进行OAuth2.0
授权登录接入之前,需拥有应用所对应ClientID
和ClientSecret
,方可开始接入流程。
授权流程说明
OAuth2.0授权登录让Uplive用户安全登录第三方游戏,在用户授权登录已接入OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token
),通过access_token
可以进行开放平台授权关系接口调用,从而可实现获取用户基本开放信息和帮助用户实现基础开放功能等
OAuth2.0授权登录目前支持authorization_code
模式,适用于拥有server端的应用授权。
该模式整体流程为:
用户请求进入第三方游戏页面,开放平台会打开预定义的三方回调页面,并且带上授权临时票据code参数; 通过code参数加上ClientID和ClientSecret等,通过API换取access_token; 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
获取access_token
时序图:
1、携带code,打开回调页面
开放平台配置了回调地址(redirect_uri
),用户每次进入游戏页面,都会携带一个新的code
到redirect_uri
。游戏开发者可以使用这个新code
,换取access_token
2、通过code
获取access_token
通过code
获取access_token
POST https://up-oauth.pengpengla.com/token |
入参
参数 | 可缺省 | 说明 |
---|---|---|
client_id | 否 | 应用在开放平台的唯一标示 |
client_secret | 否 | 应用密钥 |
code | 否 | 第一步获取的code |
grant_type | 否 | 填authorization_code |
redirect_uri | 否 | 必须和第一步的redirect_uri一致 |
返回结果
{ |
出参说明
参数 | 说明 |
---|---|
access_token | 接口调用凭证 |
expires_in | 接口调用凭证超时时间,单位(秒) |
refresh_token | 用户刷新access_token |
open_id | 授权用户唯一标识 |
scope | 用户授权的作用域,使用逗号(,)分隔 |
其他说明
access_token
是调用授权关系接口的调用凭证,由于access_token
有效期(目前为12个小时)较短,当access_token
超时后,可以使用refresh_token
进行刷新,access_token
刷新结果有两种:
- 若
access_token
已超时,那么进行refresh_token
会获取一个新的access_token
,新的超时时间; - 若
access_token
未超时,那么进行refresh_token
不会改变access_token
,但超时时间会刷新,相当于续期access_token
。refresh_token
拥有较长的有效期(90天),当refresh_token
失效的后,需要用户重新授权。
3、刷新access_token
https://up-oauth.pengpengla.com/token?client_id=ClientID&client_secret=ClientSecret&refresh_token=RefreshToken&grant_type=refresh_token |
入参
参数 | 是否必须 | 说明 |
---|---|---|
client_id | 否 | 应用在开放平台的唯一标示 |
client_secret | 否 | 应用密钥 |
grant_type | 是 | 填refresh_token |
refresh_token | 是 | 第一步获取的refresh_token |
redirect_uri | 否 | 必须和第一步的redirect_uri一致 |
返回结果
{ |
出参说明
参数 | 说明 |
---|---|
access_token | 接口调用凭证 |
expires_in | 接口调用凭证超时时间,单位(秒) |
refresh_token | 用户刷新access_token |
open_id | 授权用户唯一标识 |
scope | 用户授权的作用域 |
4、特别说明
client_secret
是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取client_secret
);access_token
为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token
后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;refresh_token
为用户授权第三方应用的长效凭证,仅用于刷新access_token
,但泄漏后相当于access_token
泄漏,风险同上。
建议将secret
、用户数据(如access_token
)放在App云端服务器,由云端中转接口调用请求。