这两天收到接入小米开放平台的需求,总结一下,以接入小米账号登录为例,讲下整个大致流程。
首先,要有开发者账号,看这个教程:点击打开链接
然后是创建新游戏
然后点创建新游戏,有一个比较坑的地方就是包名必须以.mi结尾
比如你原来的包名是com.linxinfa.birdgame,不行,必须改成com.linxinfa.birdgame.mi
申请游戏成功后会得到一个clientId和clientSecret,这个在接SDK的时候需要使用到。
接下来是接入账号服务sdk,
小米的sdk是放在github上的,对应的文档也是在github上,
以客户端android版sdk为例,看着文档做,有几点需要讲一下,
1 下载到的sdk解压后会发现有很多个版本的jar包,拷贝最新版本的jar包到工程中即可
2 登录按钮点了之后调用什么?
XiaomiOAuthFuture future = new XiaomiOAuthorize()
//开发者预先申请好的 AppID
.setAppId(appID)
// 开发者预先申请时填好的 redirectUrl
.setRedirectUrl(redirectUri)
// int数组,可以用XiaomiOAuthConstants.SCOPE_*等常量
.setSkipConfirm(skipConfirm) // 不调的话默认是false
.setScope(scope)
// 如果是要获得Code的方式,则把startGetAccessToken改成startGetOAuthCode即可。其他相同
.startGetAccessToken(activity);
注意setSkipConfirm这个的调用,如果传true,即使已经登录过了,再次登录,也会弹出ui询问确认登录,如果为false,则如果之前登录过,再次登录不会弹出ui,而是直接登录。
另,Scope代表了一个AccessToken的权限,主要有:
XiaomiOAuthConstants.SCOPE_PROFILE
XiaomiOAuthConstants.SCOPE_RELATION
XiaomiOAuthConstants.SCOPE_OPEN_ID
XiaomiOAuthConstants.SCOPE_PHONE
另,startGetAccessToken的参数是Unity的主Activity
3 登录的回调在哪里?
以上得到的future,调用waitAndShowFutureResult(future);
然后再waitAndShowFutureResult中进行处理,参考sdk demo中的MainActivity代码。结果是存在类的成员变量results中的。
4 不要使用fastOAuth
因为只有在miui上才可以使用,而且即使是miui,也可能会出现miui版本过低的问题,所以不要使用fastOAuth
5 关于昵称、头像、openId的获取
客户端通过登录接口可以获得三个数据:
results.getAccessToken()
results.getMacKey()
results.getMacAlgorithm())
那么怎么获取昵称、头像和openId呢?这个交给服务器来获取,客户端把accessToken发给服务器,服务器通过http Get来获取昵称、头像和openId,详细看这里:点击打开链接
获取头像和昵称的http Get: https://open.account.xiaomi.com/user/profile
参数clientId和token
获取openid的http Get: https://open.account.xiaomi.com/user/openidV2
参数clientId和token
嗯,登录的流程大致就是这样