Android 實現(xiàn)微信登錄詳解
前言
分享到微信朋友圈的功能早已經(jīng)有了,但微信登錄推出并不久,文檔寫的也并不是很清楚,這里記錄分享一下。
正文
一、準備
注冊、認證步驟自己來。微信開放平臺:https://open.weixin.qq.com
二、 代碼
2.1 喚起微信登錄
參考官網(wǎng)文檔:資源中心/移動應用開放/接入指南/Android接入指南
private IWXAPI mWeixinAPI; private void loginWithWeixin() { if (mWeixinAPI == null) { mWeixinAPI = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID, false); } if (!mWeixinAPI.isWXAppInstalled()) { //提醒用戶沒有按照微信 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提示沒權限。
WEIXIN_STATE :用于保持請求和回調(diào)的狀態(tài),授權請求后原樣帶回給第三方。該參數(shù)可用于防止csrf攻擊(跨站請求偽造攻擊),建議第三方帶上該參數(shù),可設置為簡單的隨機數(shù)加session進行校驗。
不出意外就能喚起微信登錄了。
2.2 接收微信的請求及返回值
在你的包名相應目錄下新建一個wxapi目錄,并在該wxapi目錄下新增一個WXEntryActivity類,參考文檔在AndroidManifest.xml注冊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) { //用戶同意 } } }
注意:這里和微信的例子寫的有點不一樣,不過結果是一樣的,這個能取到code等信息,測試返回數(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弄成透明的,然后再彈起來一個ProgressDialog進行后續(xù)的操作(提交你自己的服務器),就能和現(xiàn)有的界面完全融合了。
三、注意:
3.1 獲取簽名必須用release包。(所以你會發(fā)現(xiàn)微信、微博SDK取得值是一樣,所以如果已經(jīng)有了微博的簽名可以直接拷貝到微信使用)
以上對Android 微信登錄分享朋友圈的功能,有需要的朋友可以看下。
相關文章
Android編程程序?qū)崿F(xiàn)一鍵鎖屏的方法講解
今天小編就為大家分享一篇關于Android編程程序?qū)崿F(xiàn)一鍵鎖屏的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03Android多種方式實現(xiàn)相機圓形預覽的示例代碼
這篇文章主要介紹了Android多種方式實現(xiàn)相機圓形預覽的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08淺析Android Dialog中setContentView()方法
本篇文章主要介紹了Android Dialog中setContentView()方法的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05android 捕獲系統(tǒng)異常并上傳日志具體實現(xiàn)
這篇文章介紹了android 捕獲系統(tǒng)異常并上傳日志具體實現(xiàn),有需要的朋友可以參考一下2013-09-09