Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 微信授權登陸接入第三方App(步驟總結)Android

微信授權登陸接入第三方App(步驟總結)Android

編輯:關於Android編程

這幾天開發要用到微信授權的功能,所以就研究了一下。可是微信開放平台接入指南裡有幾個地方寫的不清不楚。在此總結一下,以便需要的人。

很多微信公眾平台的應用如果移植到app上的話就需要微信授權登陸了。

目前移動應用上微信登錄只提供原生的登錄方式,需要用戶安裝微信客戶端才能配合使用。也就是如果第三方應用需要微信授權登陸的話就必須在本機上安裝了微信。而後續授權登陸或調用接口之類的相當於app和微信兩個應用之間通話。

1、首先需要注冊微信開放平台,然後獲取開發者認證。審批通過之後再創建一個移動應用同樣還是需要審批。通過之後就可以給這個應用添加微信授權登陸以及相應功能了。這裡移動應用審批通過之後會給你兩個參數,一個叫AppId,一個叫Secret。這兩個參數在後面用的到。

補充:寫這篇文章有一段時間了。在這補充下大家容易出問題的幾個地方。

1)大家在創建移動應用的時候注意的地方。

\

上面圖片是申請移動應用時候的第二步,令我想不明白的是很多開發者還不知道應用包名和應用簽名指的是什麼。。。。。。。。

包名是你manifest文件裡面頂層的那個package啊。

\

就是這個東西啊,這個東西啊少年。

2)應用簽名。好吧我真不想啰嗦了。應用簽名就是你同過ks文件得到的那個應用簽名。如果你不知道如何獲得這個簽名。請按下面步驟走:

1,先把你的應用程序打包安裝在你的手機上。

2,下載官網上提供的簽名生成工具並安裝在手機上。下面這個地方下載:

\

3、打開簽名生成工具輸入你的app的包名就生成你的應用簽名了。

補充完畢。。。(對於上面這點補充我真不想多回答了。PS:我的昵稱留下了QQ我很無辜啊。。。大家有問題上班時間別問好嗎,哥心軟不忍心拒絕啊,尤其有妹子問的時候啊。。。墳蛋)

2、在需要微信授權的項目中導入微信的第三方JAR包,這個在微信開放平台接入指南裡面說的很清楚,不再啰嗦。

3、注冊到微信:

\

這一步也沒什麼課解釋的,相當於兩人要聯系的時候先打通了電話,然後開始溝通。這一步在需要和微信通話的界面之前注冊了就行。我的是在歡迎界面注冊的。

4、開始和微信通話

首先和微信通話之前,要在項目代碼中新建一個Activity,並提供相應的回調方法供微信調用。但是這一點在接入指南上寫的就不清不楚導致我浪費了好幾個小時。一下內容是我在接入指南裡復制來的。

 

a. 在你的包名相應目錄下新建一個wxapi目錄,並在該wxapi目錄下新增一個WXEntryActivity類,該類繼承自Activity(例如應用程序的包名為net.sourceforge.simcpux,則新添加的類如下圖所示)

\

並在manifest文件裡面加上exported屬性,設置為true。

一定要注意上面這句話:在你的包名相應目錄下新建一個wxapi目錄。說的是在包名相應目錄下建一個wxapi目錄。也就是是包名目錄的子目錄,千萬不要直接在src下面建個包就完了。(粗心這毛病害死人啊。)

然後再這個包下面建一個類:

publicclassWXEntryActivityextendsActivityimplementsIWXAPIEventHandler{

privateIWXAPIapi;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.flash_activity);
api=WXAPIFactory.createWXAPI(this,Property.wxLoginInfo.getAppid(),false);
api.handleIntent(getIntent(),this);
}

@Override
publicvoidonReq(BaseReqarg0){
//TODOAuto-generatedmethodstub

}

@Override
publicvoidonResp(BaseRespresp){
Bundlebundle=newBundle();
switch(resp.errCode){
caseBaseResp.ErrCode.ERR_OK:
//可用以下兩種方法獲得code
//resp.toBundle(bundle);
//Respsp=newResp(bundle);
//Stringcode=sp.code;
//或者
Stringcode=((SendAuth.Resp)resp).code;
//上面的code就是接入指南裡要拿到的code

break;

default:
break;
}

}
}

注意:上面是獲取code。現在最新的官方jar包好像不支持獲得code了。直接就能得到token,省略了獲取code 這一步。所以方法不變,大家取的時候直接resp.token就行了。不用再去取code了。但是,但是,這樣直接拿到token了好像按照官方文檔上的方法就不能獲得openid了。我也沒嘗試有什麼新的方法,反正是jar包更新了但是文檔還沒更新,大家弄不成功的話可以先用舊的jar和上面獲取code的方法。

這是那個WXEntityAcitivity的部分代碼。結合接入指南,大家應該都看的懂。
{
//sendoauthrequest
FinalSendAuth.Reqreq=newSendAuth.Req();
req.scope="snsapi_userinfo";
req.state="wechat_sdk_demo_test";
api.sendReq(req);
}

 

這一步就是和微信要code。執行了這一段代碼之後。微信會調用剛才WXEntityActivity類裡面的onResp()方法。並且把code返回來了。見上面那一段代碼。獲取到code之後就可以通過code獲取access_token了。
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 這步和微信通信獲得access_token就是普通的訪問鏈接。 用httpClient就行了,而不是接入指南裡說的那個和微信通信的方法onReq().然後還是這樣的方式通過access_token.就可以調用接口獲得用戶基本信息了。具體返回參數什麼的接入指南裡面說的很清楚。至此微信授權基本是成功了。這裡,我們要添加Custom debug keystore。上面的那個debug keystore不會和微信通信。這樣修改完keystore之後把這個keystore放到上面ADT的custom debug keystore裡面。就可以直接調試微信相關的功能了。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved