日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

[Android]-SDK QQ微信登入

發(fā)布時間:2023/12/8 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Android]-SDK QQ微信登入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Unity中接入大量SDK,對一個零Android開發(fā)基礎(chǔ)的人來說還是比較蛋疼的.在網(wǎng)上搜了一大堆資料,總算折騰出一個能用的QQ&微信登入SDK.

在QQ互聯(lián)和微信開放平臺注冊,并申請相關(guān)權(quán)限后,可拿到指定AppID和AppSecret.有了這些東西才能讓接入SDK正常運(yùn)行.



QQ登入

先將官方的SDK,jar包導(dǎo)入項(xiàng)目.
再在onCreate中創(chuàng)建Tencent類實(shí)例..

@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i("MainActivity", "---->>onCreate");mInstance = this;mTencent = Tencent.createInstance(AppConst.AppID_QQ, this.getApplicationContext());mWXapi = WXEntryActivity.initWeiXin(this, AppConst.AppID_WX);initOkHttp(); }

重寫指定listener和onActivityResult..

//QQ登入 public void LoginQQ() {ShowToast("LoginQQ 調(diào)用");mTencent.logout(this);if (!mTencent.isSessionValid()) {ShowToast("LoginQQ 客戶端訪問");mTencent.login(this, "all", loginListener);isServerSideLogin = false;} }//QQ登出 public void LogoutQQ() {mTencent.logout(this); }private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object response) {if (null == response) {ShowToast("登錄失敗");return;}JSONObject jsonResponse = (JSONObject) response;if (null != jsonResponse && jsonResponse.length() == 0) {ShowToast("登錄失敗");return;}ShowToast("登錄成功 : " + response);doComplete((JSONObject) response);}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError e) {ShowToast("QQ 登入異常");}@Overridepublic void onCancel() {ShowToast("QQ 登入取消");} }IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {ShowToast("QQ 登入返回?cái)?shù)據(jù) :" + values);try {String token = values.getString(Constants.PARAM_ACCESS_TOKEN);String expires = values.getString(Constants.PARAM_EXPIRES_IN);String openId = values.getString(Constants.PARAM_OPEN_ID);if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires);mTencent.setOpenId(openId);UnityPlayer.UnitySendMessage(AppConst.gameObject, AppConst.loginCallBack, openId);}} catch (Exception e) {}} };@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {Log.i("Tencent", "-->onActivityResult " + requestCode + " resultCode=" + resultCode);if (requestCode == Constants.REQUEST_LOGIN ||requestCode == Constants.REQUEST_APPBAR) {Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);}super.onActivityResult(requestCode, resultCode, data); }



微信登入

先將官方的SDK,jar包和okhttp框架的jar包導(dǎo)入項(xiàng)目.
再在onCreate中初始化IWXAPI類和okhttp(http框架).

@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i("MainActivity", "---->>onCreate");mInstance = this;mTencent = Tencent.createInstance(AppConst.AppID_QQ, this.getApplicationContext());mWXapi = WXEntryActivity.initWeiXin(this, AppConst.AppID_WX);initOkHttp(); }

//封裝okhttp框架的初始化配置

private void initOkHttp() {HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null);CookieJarImpl cookieJar = new CookieJarImpl(new PersistentCookieStore(getApplicationContext()));OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new LoggerInterceptor("TAG")).cookieJar(cookieJar).connectTimeout(20000L, TimeUnit.MILLISECONDS).readTimeout(20000L, TimeUnit.MILLISECONDS).writeTimeout(20000L, TimeUnit.MILLISECONDS).sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)//其他配置.build();OkHttpUtils.initClient(okHttpClient); }

微信SDK的接入,需要在wxapi文件夾中放入WXEntryActivity類,這是硬性要求.

WXEntryActivity類需要實(shí)現(xiàn)IWXAPIEventHandler和Activity.主要實(shí)現(xiàn)如下.

private static final String TAG = "WXEntryActivity";public static WeChatCode mWeChatCode;public static WXEntryActivity mInstance;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i(TAG, "-->> onCreate");mInstance = this;try {MainActivity.mWXapi.handleIntent(getIntent(), this);} catch (Exception e) {e.printStackTrace();}}//微信組件注冊初始化public static IWXAPI initWeiXin(Context context, String appId) {Log.i(TAG, "-->> initWeiXin");if (TextUtils.isEmpty(appId)) {Toast.makeText(context.getApplicationContext(), "app_id 不能為空", Toast.LENGTH_SHORT).show();}IWXAPI api = WXAPIFactory.createWXAPI(context, appId, true);api.registerApp(appId);return api;}// 登錄微信public static void loginWeixin(Context context, IWXAPI api, WeChatCode wechatCode) {Log.i(TAG, "-->> loginWeiXin");mWeChatCode = wechatCode;// 發(fā)送授權(quán)登錄信息,來獲取codeSendAuth.Req req = new SendAuth.Req();// 應(yīng)用的作用域,獲取個人信息req.scope = "snsapi_userinfo";req.state = "login_state";api.sendReq(req);}// 微信發(fā)送請求到第三方應(yīng)用時,會回調(diào)到該方法@Overridepublic void onReq(BaseReq req) {}// 第三方應(yīng)用發(fā)送到微信的請求處理后的響應(yīng)結(jié)果,會回調(diào)到該方法@Overridepublic void onResp(BaseResp resp) {switch (resp.errCode) {// 發(fā)送成功case BaseResp.ErrCode.ERR_OK:MainActivity.mInstance.ShowToast("第一步:請求CODE 成功");// 獲取codeString code = ((SendAuth.Resp) resp).code;mWeChatCode.getResponse(code);break;case BaseResp.ErrCode.ERR_USER_CANCEL:MainActivity.mInstance.ShowToast("onResp ERR_USER_CANCEL");//發(fā)送取消finish();break;case BaseResp.ErrCode.ERR_AUTH_DENIED:MainActivity.mInstance.ShowToast("onResp ERR_AUTH_DENIED");//發(fā)送被拒絕break;default:MainActivity.mInstance.ShowToast("onResp default errCode " + resp.errCode);//發(fā)送返回break;}}/*** 返回code的回調(diào)接口*/public interface WeChatCode {void getResponse(String code);}

通訊數(shù)據(jù)使用的是json格式.所以這里還需要為指定數(shù)據(jù)生成json數(shù)據(jù)類.關(guān)于json數(shù)據(jù)類的生成,網(wǎng)上有現(xiàn)成的在線生成工具.
這里還有一個WXApi類實(shí)現(xiàn),具體邏輯看Demo

AndroidManifest.xml配置文件中添加

<!-- QQ 登入 --><activity android:name="com.tencent.tauth.AuthActivity"android:launchMode="singleTask"android:noHistory="true" ><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="tencent 你的AppID" /></intent-filter></activity><activity android:name="com.tencent.connect.common.AssistActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize"/><!-- 微信登入 --><activity android:name=".wxapi.WXEntryActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait" />

QQ SDK具體接入流程以及注意事項(xiàng)可查看http://wiki.connect.qq.com/

微信 SDK具體接入流程以及注意事項(xiàng)可查看
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

在線生成工具類鏈接http://tool.chinaz.com/tools/json2entity.aspx

源碼分享鏈接https://github.com/B-CK/QQ-WXLoginSDK

總結(jié)

以上是生活随笔為你收集整理的[Android]-SDK QQ微信登入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。