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

 

分類: Android學習

這幾天開發要用到微信受權的功能,因此就研究了一下。但是微信開放平臺接入指南里有幾個地方寫的不清不楚。在此總結一下,以便須要的人。java

不少微信公衆平臺的應用若是移植到app上的話就須要微信受權登錄了。android

 

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

 

一、首先須要註冊微信開放平臺,而後獲取開發者認證。審批經過以後再建立一個移動應用一樣仍是須要審批。經過以後就能夠給這個應用添加微信受權登錄以及相應功能了。這裏移動應用審批經過以後會給你兩個參數,一個叫AppId,一個叫Secret。這兩個參數在後面用的到。api

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

1)你們在建立移動應用的時候注意的地方。app

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

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

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

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

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

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

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

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

二、在須要微信受權的項目中導入微信的第三方JAR包,這個在微信開放平臺接入指南裏面說的很清楚,再也不囉嗦。

三、註冊到微信:

這一步也沒什麼課解釋的,至關於兩人要聯繫的時候先打通了電話,而後開始溝通。這一步在須要和微信通話的界面以前註冊了就行。個人是在歡迎界面註冊的。

四、開始和微信通話

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

 

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

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

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

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

 

[java]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. <pre name="code" class="java">public class WXEntryActivity extends Activity implements IWXAPIEventHandler{  
  2.   
  3.     private IWXAPI api;  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         // TODO Auto-generated method stub  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.flash_activity);  
  9.         <span style="color:#3366ff;">api = WXAPIFactory.createWXAPI(this, Property.wxLoginInfo.getAppid(), false);  
  10.         api.handleIntent(getIntent(), this);</span>  
  11.     }  
  12.       
  13.     @Override  
  14.     public void onReq(BaseReq arg0) {  
  15.         // TODO Auto-generated method stub  
  16.           
  17.     }  
  18.   
  19.     @Override  
  20.     public void onResp(BaseResp resp) {  
  21.         Bundle bundle = new Bundle();  
  22.         switch (resp.errCode) {  
  23.         case BaseResp.ErrCode.ERR_OK:  
  24. //      可用如下兩種方法得到code  
  25. //      resp.toBundle(bundle);  
  26. //      Resp sp = new Resp(bundle);  
  27. //      String code = sp.code;<span style="white-space:pre">  
  28. //      或者  
  29.         String code = ((SendAuth.Resp) resp).code;  
  30.             //上面的code就是接入指南里要拿到的code  
  31.               
  32.             break;  
  33.   
  34.         default:  
  35.             break;  
  36.         }  
  37.           
  38.     }  
  39. }  


 這是那個WXEntityAcitivity的部分代碼。結合接入指南,你們應該都看的懂。 
 

 

而後開始和微信通話,

 

[java]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
 
  1. </pre><pre name="code" class="java">{   
  2. // send oauth request   
  3. Final SendAuth.Req req = new SendAuth.Req();  
  4. req.scope = "snsapi_userinfo";  
  5. req.state = "wechat_sdk_demo_test";  
  6. api.sendReq(req);  
  7. }  

這一步就是和微信要code。執行了這一段代碼以後。微信會調用剛纔WXEntityActivity類裏面的onResp()方法。而且把code返回來了。見上面那一段代碼。獲取到code以後就能夠經過code獲取access_token了。

 

請求如下連接獲取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.就能夠調用接口得到用戶基本信息了。具體返回參數什麼的接入指南里面說的很清楚。至此微信受權基本是成功了。

不過在開發的過程當中要注意一下debug keystore。就是Window->Preferences->Android->Build裏面。

這裏,咱們要添加Custom debug keystore。上面的那個debug keystore不會和微信通訊。

而咱們添加的這個keystore 也要符合一些規範因此要改一改。

那就是keystore的密碼改成:android

keytool -storepasswd -keystore my.keystore (在cmd裏執行的命令)

其中,my.keystore是要修改的證書文件,執行後會提示輸入證書的當前密碼,和新密碼以及重複新密碼確認。這一步須要將密碼改成android

alias的名稱要改成:androiddebugkey

keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey

這一步中,my_name是證書中當前的alias,-destalias指定的是要修改成的alias,這裏按規矩來,改成androiddebugkey!這個命令會前後提示輸入keystore的密碼和當前alias的密碼。

keystore的alias密碼也改成:android

keytool -keypasswd -keystore my.keystore -alias androiddebugkey

 

這一步執行後會提示輸入keystore密碼,alias密碼,而後提示輸入新的alias密碼,一樣,按規矩來,改成android!

這樣修改完keystore以後把這個keystore放到上面ADT的custom debug keystore裏面。就能夠直接調試微信相關的功能了。

大概就這幾點吧。 

相關文章
相關標籤/搜索