編輯:關於Android編程
本文實例講述了Android實現使用微信登錄第三方APP的方法。分享給大家供大家參考,具體如下:
使用微信登錄APP,免去注冊過程,現在已經有很多的類似應用了。集成該功能過程不復雜,但還是有一些地方需要注意的。
開始之前,需要做下面的准備工作。
1、到微信開放平台注冊你的APP,並申請開通微信登錄的權限。參考這裡:
https://open.weixin.qq.com//
2、下載Android SDK和簽名查看工具,請參考:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN/
3、獲取到APP的簽名,並填寫到微信開放平台。
下面開始進入主題:
引入微信登錄相關SDK到項目的lib文件夾中,就一個文件:
libammsdk.jar
調用微信,申請用戶授權:
//api注冊 api = WXAPIFactory.createWXAPI(this, "APP_ID", true); api.registerApp("APP_ID"); SendAuth.Req req = new SendAuth.Req(); //授權讀取用戶信息 req.scope = "snsapi_userinfo"; //自定義信息 req.state = "wechat_sdk_demo_test"; //向微信發送請求 api.sendReq(req);
將APP_ID替換成你在微信開放平台申請到的,上面的代碼就可以調起微信了。
授權成功後,微信會返回一個code,下面介紹如何接收微信回傳的信息。
在你的包名相應目錄下新建一個wxapi目錄,並在該wxapi目錄下新增一個WXEntryActivity.java文件,輸入類似下面的代碼:
package 你的包名.wxapi;
public class WXEntryActivity extends Activity implements IWXAPIEventHandler{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //注冊API api = WXAPIFactory.createWXAPI(this, "APP_ID"); api.handleIntent(getIntent(), this); } @Override public void onResp(BaseResp resp) { if(resp instanceof SendAuth.Resp){ SendAuth.Resp newResp = (SendAuth.Resp) resp; //獲取微信傳回的code String code = newResp.code; } } }
在AndroidManifest.xml中加入下面的代碼:
復制代碼 代碼如下:<activity android:exported="true" android:launchMode="singleTop" android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.NoDisplay" />
修復WXEntryActivity中的錯誤,在onResp方法中獲取到code,然後通過下面的接口獲取到token和openid:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
得到下面的數據:
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE", "unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL" }
openid可以作為用戶的唯一標識,將openid保存下來,就可以實現登錄狀態的檢查了。
如果需要獲取用戶的信息,例如昵稱,頭像,可以使用下面的接口:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
得到的數據為:
{ "openid":"OPENID", "nickname":"NICKNAME", "sex":1, "province":"PROVINCE", "city":"CITY", "country":"COUNTRY", "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "privilege":[ "PRIVILEGE1", "PRIVILEGE2" ], "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" }
更多的接口使用,請參考:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317853&lang=zh_CN
可能的問題:
1、無法調起微信。
可能的原因是簽名錯誤,請檢查簽名。
2、無法接受到微信回傳的信息
可能的原因是沒有把WXEntryActivity加入到AndroidManifest.xml中。
PS:關於AndroidManifest.xml文件相關屬性功能可參考本站在線工具:
Android Manifest功能與權限描述大全:
http://tools.jb51.net/table/AndroidManifest
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android數據庫操作技巧總結》、《Android編程之activity操作技巧總結》、《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android資源操作技巧匯總》、《Android視圖View技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
程序入口//// LCBusinessTableViewController.m// 口碑頁面//// Copyright ? 2016年 LongChuang.
很多Android系統手機都或多或少出現過信號不穩的問題,其實很多時候不是手機自身的質量不佳,而是我們沒有對其進行合理的網絡配置。以聯通WCDMA制式的An
紐扣電池的型號通常在紐扣電池的背面由字母和阿拉伯數字組成,了解一些基本的電池型號知識對生活很有幫助,因為我們日常見到的兒童玩具、電路主板、電子表、遙控器等電
2.5對話框控件對話框是提示用戶作出決定或輸入額外信息的小窗口。對話框不會填充屏幕,通常用於需要用戶采取行動才能繼續執行的模式事件。Android中常見跟對話框相關控件有