授权登录

准备工作

在进行OAuth2.0授权登录接入之前,需拥有应用所对应ClientIDClientSecret,方可开始接入流程。

授权流程说明

OAuth2.0授权登录让Uplive用户安全登录第三方游戏,在用户授权登录已接入OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行开放平台授权关系接口调用,从而可实现获取用户基本开放信息和帮助用户实现基础开放功能等

OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。

该模式整体流程为:

  1. 用户请求进入第三方游戏页面,开放平台会打开预定义的三方回调页面,并且带上授权临时票据code参数;
  2. 通过code参数加上ClientID和ClientSecret等,通过API换取access_token;
  3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

获取access_token时序图:

1、携带code,打开回调页面

开放平台配置了回调地址(redirect_uri),用户每次进入游戏页面,都会携带一个新的coderedirect_uri。游戏开发者可以使用这个新code,换取access_token

2、通过code获取access_token

通过code获取access_token

POST https://up-oauth.pengpengla.com/token
client_id=ClientID
client_secret=ClientSecret
code=CODE
grant_type=authorization_code

入参

参数 可缺省 说明
client_id 应用在开放平台的唯一标示
client_secret 应用密钥
code 第一步获取的code
grant_type 填authorization_code
redirect_uri 必须和第一步的redirect_uri一致

返回结果

{ 
"access_token" : "7bd57a521773086944f2c4d0b86334d1a85be0a0",
"expires_in" : 7200,
"refresh_token" : "237b30f8f7dc0c7b28624244199d08641bef7592",
"open_id" : "cf9638c78fc06955d6dd27ab1319089b",
"scope" : "SCOPE",
"unionid": "fc5e2c46b1fe97b5c14fad55f590a288"
}

出参说明

参数 说明
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_tokenrefresh_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" : "ACCESS_TOKEN",
"expires_in" : 7200,
"refresh_token" : "REFRESH_TOKEN",
"open_id" : "OPEN_ID",
"scope" : "SCOPE" ,
"unionid" : "fc5e2c46b1fe97b5c14fad55f590a288"
}

出参说明

参数 说明
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云端服务器,由云端中转接口调用请求。