Android 實(shí)現(xiàn)微信登錄詳解
前言
分享到微信朋友圈的功能早已經(jīng)有了,但微信登錄推出并不久,文檔寫(xiě)的也并不是很清楚,這里記錄分享一下。
正文
一、準(zhǔn)備
注冊(cè)、認(rèn)證步驟自己來(lái)。微信開(kāi)放平臺(tái):https://open.weixin.qq.com
二、 代碼
2.1 喚起微信登錄
參考官網(wǎng)文檔:資源中心/移動(dòng)應(yīng)用開(kāi)放/接入指南/Android接入指南
private IWXAPI mWeixinAPI;
private void loginWithWeixin() {
if (mWeixinAPI == null) {
mWeixinAPI = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID, false);
}
if (!mWeixinAPI.isWXAppInstalled()) {
//提醒用戶沒(méi)有按照微信
return;
}
mWeixinAPI.registerApp(WEIXIN_APP_ID);
SendAuth.Req req = new SendAuth.Req();
req.scope = WEIXIN_SCOPE;
req.state = WEIXIN_STATE;
mWeixinAPI.sendReq(req);
}
WEXIN_SCOPE :這里填的snsapi_userinfo,用snsapi_base提示沒(méi)權(quán)限。
WEIXIN_STATE :用于保持請(qǐng)求和回調(diào)的狀態(tài),授權(quán)請(qǐng)求后原樣帶回給第三方。該參數(shù)可用于防止csrf攻擊(跨站請(qǐng)求偽造攻擊),建議第三方帶上該參數(shù),可設(shè)置為簡(jiǎn)單的隨機(jī)數(shù)加session進(jìn)行校驗(yàn)。
不出意外就能喚起微信登錄了。
2.2 接收微信的請(qǐng)求及返回值
在你的包名相應(yīng)目錄下新建一個(gè)wxapi目錄,并在該wxapi目錄下新增一個(gè)WXEntryActivity類(lèi),參考文檔在AndroidManifest.xml注冊(cè)Activity。
public class WXEntryActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
SendAuth.Resp resp = new SendAuth.Resp(intent.getExtras());
if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
//用戶同意
}
}
}
注意:這里和微信的例子寫(xiě)的有點(diǎn)不一樣,不過(guò)結(jié)果是一樣的,這個(gè)能取到code等信息,測(cè)試返回?cái)?shù)據(jù)如下:
E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_state xxx
E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
E/WXEntryActivity(14288): onCreate...key:_mmessage_appPackage com.tencent.mm
E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_transaction null
E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_lang zh_CN
E/WXEntryActivity(14288): onCreate...key:_wxapi_command_type 1
E/WXEntryActivity(14288): onCreate...key:_mmessage_content null
E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_country null
E/WXEntryActivity(14288): onCreate...key:_mmessage_checksum [B@426358e8
E/WXEntryActivity(14288): onCreate...key:wx_token_key com.tencent.mm.openapi.token
E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_url xxxxxxxxxxx
E/WXEntryActivity(14288): onCreate...key:_mmessage_sdkVersion 570490883
E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errcode 0
E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errstr null
E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_openId null
xxx 部分的內(nèi)容我已經(jīng)隱掉了,拿到code就能拿到access——token了,后續(xù)依據(jù)文檔調(diào)用即可。
這里你可以把WXEntryActivity的theme弄成透明的,然后再?gòu)椘饋?lái)一個(gè)ProgressDialog進(jìn)行后續(xù)的操作(提交你自己的服務(wù)器),就能和現(xiàn)有的界面完全融合了。
三、注意:
3.1 獲取簽名必須用release包。(所以你會(huì)發(fā)現(xiàn)微信、微博SDK取得值是一樣,所以如果已經(jīng)有了微博的簽名可以直接拷貝到微信使用)
以上對(duì)Android 微信登錄分享朋友圈的功能,有需要的朋友可以看下。
相關(guān)文章
android基于socket的局域網(wǎng)內(nèi)服務(wù)器與客戶端加密通信
本篇文章主要介紹了android基于socket的局域網(wǎng)內(nèi)服務(wù)器與客戶端加密通信,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-04-04
android中AutoCompleteTextView的簡(jiǎn)單用法(實(shí)現(xiàn)搜索歷史)
本篇文章主要介紹了android中AutoCompleteTextView的簡(jiǎn)單用法(自動(dòng)提示),有需要的可以了解一下。2016-11-11
實(shí)例講解Android多線程應(yīng)用開(kāi)發(fā)中Handler的使用
這篇文章主要介紹了Android多線程應(yīng)用開(kāi)發(fā)中Handler的使用,Handle主要被用來(lái)更新UI和處理消息,需要的朋友可以參考下2016-01-01
Android使用BottomTabBar實(shí)現(xiàn)底部導(dǎo)航頁(yè)效果
這篇文章主要介紹了Android使用BottomTabBar實(shí)現(xiàn)底部導(dǎo)航頁(yè)效果,本文通過(guò)實(shí)例代碼結(jié)合文字說(shuō)明的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-03-03
Android中實(shí)現(xiàn)EditText密碼顯示隱藏的方法
這篇文章主要介紹了Android中實(shí)現(xiàn)EditText密碼顯示隱藏的方法,需要的朋友可以參考下2017-01-01
Android開(kāi)發(fā)5:應(yīng)用程序窗口小部件App Widgets的實(shí)現(xiàn)(附demo)
本篇文章主要介紹了android應(yīng)用程序窗口小部件App Widgets的實(shí)現(xiàn),具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Andriod arcgis保存Mapview為圖片的實(shí)例代碼
這篇文章主要介紹了Andriod arcgis保存Mapview為圖片的實(shí)例代碼 的相關(guān)資料,需要的朋友可以參考下2016-03-03
Android OkHttp實(shí)現(xiàn)全局過(guò)期token自動(dòng)刷新示例
本篇文章主要介紹了Android OkHttp實(shí)現(xiàn)全局過(guò)期token自動(dòng)刷新示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Android中應(yīng)用界面主題Theme使用方法和頁(yè)面定時(shí)跳轉(zhuǎn)應(yīng)用
在Android SDK中內(nèi)置了下面的Theme,可以按標(biāo)題欄Title Bar和狀態(tài)欄Status Bar是否可見(jiàn)來(lái)分類(lèi),感興趣的朋友可以了解下哈2013-06-06
FFmpeg?Principle學(xué)習(xí)new_video_stream添加視頻輸出流
這篇文章主要為大家介紹了FFmpeg?Principle學(xué)習(xí)new_video_stream添加視頻輸出流示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

