授权登录

准备工作

在进行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进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
  4. 获取access_token时序图:

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

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

    2、通过code获取access_token

    通过code获取access_token

    POST https://sg-oauth.upliveapp.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://sg-oauth.upliveapp.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云端服务器,由云端中转接口调用请求。