对于一些没有过安卓开发经验的开发者来说,为了实现安卓第三方登陆肯定是费尽了脑汁,不知道从何着手解决,为了让开发者少走弯路,下面就给大家介绍下Unity中使用官方SDK实现微信、QQ、微博帐号登录的方法,一起来看看吧。
一、新建安卓工程并导入jar文件
注意写好自己的包名,微信登录和微博登录都要用到包名获取签名,把获取到的签名上传到开放平台。
填好包名后一直点next就可以了,点击finish完成创建。
创建完成后,新建一个module类,同样写好自己的包名。
二、QQ登录
QQ登录时最简单的一个,因为不需要签名。在qq开放平台下载好sdk,然后copy到libs文件夹下。
点击Add as Library就可以了,微信和微博的jar包导入也是一样,Unity的classes.jar也需要导入,后面就不赘述了。
通过调用Tencent类的login函数发起登录/校验登录态。
该API具有两个作用:
(1)如果开发者没有调用mTencent实例的setOpenId、setAccessToken API,则该API执行正常的登录操作;
(2)如果开发者先调用mTencent实例的setOpenId、setAccessToken API,则该API执行校验登录态的操作。如果登录态有效,则返回成功给应用,如果登录态失效,则会自动进入登录流程,将最新的登录态数据返回给应用。
建议开发者在每次应用启动时调用一次该API(先调用setOpenId、setAccessToken),以确保每次打开应用时用户都是有登录态的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
public class MainActivity extends UnityPlayerActivity { private Tencent mTencent; private BaseUiListener mBaseUiListener=new BaseUiListener();
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTencent = Tencent.createInstance("你的APPID", this.getApplicationContext()); }
/** * qq登录代码 Unity里调用 */ public void QQlogin() { //登录代码。。。 if (!mTencent.isSessionValid()) { mTencent.login(this, "", mBaseUiListener); }
}
/** * qq请求回调 */ private class BaseUiListener implements IUiListener {
@Override public void onComplete(Object o) { JSONObject response=(JSONObject)o; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//把请求到的参数传给unity UnityPlayer.UnitySendMessage("ThirdLoginGameobject","QQCallBack",o.toString()); }
@Override public void onError(UiError uiError) { }
@Override public void onCancel() {
} }
/** * qq登录页面返回处理 * @param requestCode * @param resultCode * @param data */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Tencent.onActivityResultData(requestCode,resultCode,data,mBaseUiListener); } |
然后再mainfest里配置权限。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
"android.permission.INTERNET"> "android.permission.ACCESS_NETWORK_STATE">
"com.tencent.tauth.AuthActivity" android:nohistory="true" android:launchmode="singleTask"> "android.intent.action.VIEW"> "android.intent.category.DEFAULT"> "android.intent.category.BROWSABLE"> "tencent你的AppId"> |
SDK_V2.0引入了AssistActivity,开发者需在androidManifest.xml中注册。代码如下:
1 |
"com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configchanges="orientation|keyboardHidden|screenSize"> |
现在就可以成功拉起QQ授权页面并登陆了。
三、微信登录
新建一个名为wxapi的包和WXEntryActivity的类。
WXEntryActivity的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private static final String WEIXIN_ACCESS_TOKEN_KEY = "wx_access_token_key"; private static final String WEIXIN_OPENID_KEY = "wx_openid_key"; private static final String WEIXIN_REFRESH_TOKEN_KEY = "wx_refresh_token_key"; public static WeChatCode mWeChatCode; < |