小米开放平台接入笔记

这两天收到接入小米开放平台的需求,总结一下,以接入小米账号登录为例,讲下整个大致流程。

首先,要有开发者账号,看这个教程:点击打开链接

然后是创建新游戏

小米开放平台接入笔记_第1张图片

然后点创建新游戏,有一个比较坑的地方就是包名必须以.mi结尾

比如你原来的包名是com.linxinfa.birdgame,不行,必须改成com.linxinfa.birdgame.mi

申请游戏成功后会得到一个clientId和clientSecret,这个在接SDK的时候需要使用到。

接下来是接入账号服务sdk,

小米开放平台接入笔记_第2张图片

小米的sdk是放在github上的,对应的文档也是在github上,

以客户端android版sdk为例,看着文档做,有几点需要讲一下,

1 下载到的sdk解压后会发现有很多个版本的jar包,拷贝最新版本的jar包到工程中即可

小米开放平台接入笔记_第3张图片

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



嗯,登录的流程大致就是这样

你可能感兴趣的:(小米开放平台接入笔记)