Android實現(xiàn)使用微信登錄第三方APP的方法
本文實例講述了Android實現(xiàn)使用微信登錄第三方APP的方法。分享給大家供大家參考,具體如下:
使用微信登錄APP,免去注冊過程,現(xiàn)在已經(jīng)有很多的類似應(yīng)用了。集成該功能過程不復(fù)雜,但還是有一些地方需要注意的。
開始之前,需要做下面的準(zhǔn)備工作。
1、到微信開放平臺注冊你的APP,并申請開通微信登錄的權(quán)限。參考這里:
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的簽名,并填寫到微信開放平臺。
下面開始進入主題:
引入微信登錄相關(guān)SDK到項目的lib文件夾中,就一個文件:
libammsdk.jar
調(diào)用微信,申請用戶授權(quán):
//api注冊
api = WXAPIFactory.createWXAPI(this, "APP_ID", true);
api.registerApp("APP_ID");
SendAuth.Req req = new SendAuth.Req();
//授權(quán)讀取用戶信息
req.scope = "snsapi_userinfo";
//自定義信息
req.state = "wechat_sdk_demo_test";
//向微信發(fā)送請求
api.sendReq(req);
將APP_ID替換成你在微信開放平臺申請到的,上面的代碼就可以調(diào)起微信了。
授權(quán)成功后,微信會返回一個code,下面介紹如何接收微信回傳的信息。
在你的包名相應(yīng)目錄下新建一個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中加入下面的代碼:
修復(fù)WXEntryActivity中的錯誤,在onResp方法中獲取到code,然后通過下面的接口獲取到token和openid:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
得到下面的數(shù)據(jù):
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
openid可以作為用戶的唯一標(biāo)識,將openid保存下來,就可以實現(xiàn)登錄狀態(tài)的檢查了。
如果需要獲取用戶的信息,例如昵稱,頭像,可以使用下面的接口:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
得到的數(shù)據(jù)為:
{
"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、無法調(diào)起微信。
可能的原因是簽名錯誤,請檢查簽名。
2、無法接受到微信回傳的信息
可能的原因是沒有把WXEntryActivity加入到AndroidManifest.xml中。
PS:關(guān)于AndroidManifest.xml文件相關(guān)屬性功能可參考本站在線工具:
Android Manifest功能與權(quán)限描述大全:
http://tools.jb51.net/table/AndroidManifest
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
淺析Android位置權(quán)限以及數(shù)組尋找索引的坑
這篇文章給大家分享了Android位置權(quán)限以及數(shù)組尋找索引的坑的相關(guān)知識點內(nèi)容,有興趣的朋友可以參考學(xué)習(xí)下。2018-07-07
Android實現(xiàn)屏幕旋轉(zhuǎn)方法總結(jié)
這篇文章主要介紹了Android實現(xiàn)屏幕旋轉(zhuǎn)方法,實例總結(jié)了屏幕旋轉(zhuǎn)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法
在本篇文章里小編給大家整理的是關(guān)于Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法和實例,需要的朋友們參考下。2020-01-01
Textvie實現(xiàn)左邊圖片和換行文字左對齊的方法
下面小編就為大家分享一篇Textvie實現(xiàn)左邊圖片和換行文字左對齊的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
解決Android從相冊中獲取圖片出錯圖片卻無法裁剪問題的方法
這篇文章主要介紹了解決Android從相冊中獲取圖片出錯圖片卻無法裁剪問題的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-01-01
Android 使用ContentObserver監(jiān)聽數(shù)據(jù)庫內(nèi)容是否更改
這篇文章主要介紹了Android 使用ContentObserver監(jiān)聽數(shù)據(jù)庫內(nèi)容是否更改的相關(guān)資料,ContentObserver內(nèi)容觀察者,目的是觀察(捕捉)特定Uri引起的數(shù)據(jù)庫的變化,需要的朋友可以參考下2017-08-08
Studio 編譯報錯:compileSdkVersion ''android-24'' requires JDK 1.
今天小編就為大家分享一篇關(guān)于Studio編譯報錯:compileSdkVersion 'android-24' requires JDK 1.8 or later to compile.的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
Flutter中使用setState時的6個簡單技巧總結(jié)
平常在使用flutter的控件時我們都知道,要刷新頁面那么只需要調(diào)用setState()方法即可,這篇文章主要給大家介紹了關(guān)于Flutter中使用setState時的6個簡單技巧,需要的朋友可以參考下2022-05-05
Android 獲取瀏覽器當(dāng)前分享頁面的截屏示例
本篇文章主要介紹了Android 獲取瀏覽器當(dāng)前分享頁面的截屏示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02

