Android接入微信SDK之一:發起微信授權登錄


1.重要的事情首先說!

包名、應用簽名、app id 三者都必須和在騰訊上申請的一致!!!否則將不能成功。

包名:就是在騰訊上申請的包名

應用簽名:使用微信官網提供的《簽名生成工具》(這個工具是一個apk安裝包)安裝到手機上獲取包的簽名(先將你的程序安裝到手機上,再安裝簽名生成工具,在工具上輸入你程序包名就可以獲得)

app id:微信申請后可獲得

 

2.使用默認值創建一個android項目(包名必須為在騰訊申請的包名!!!)

 

3.在默認界面上增加一個Button按鈕,方便模擬登陸發起

 

 

3.新增一個Constans.java文件用於記錄全局的常量,結構如下(其中com.yiyou.game.d...r就是在微信上申請的包名)

 

①Constants.java中的內容如下:

 

public class Constants { public static final String APP_ID = "wxxxxxxx"; //替換為申請到的app id
    
    public static IWXAPI wx_api; //全局的微信api對象
}

 

 

②MainActivity.java中的內容如下: 

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //創建微信api並注冊到微信
        Constants.wx_api = WXAPIFactory.createWXAPI(MainActivity.this, Constants.APP_ID, true); Constants.wx_api.registerApp(Constants.APP_ID); Button btn = (Button)findViewById(R.id.button1);//得到按鈕 
        btn.setOnClickListener(new OnClickListener() { //注冊按鈕點擊事件 
 @Override public void onClick(View v) { //發起登錄請求
                final SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "wechat_sdk_demo_test"; Constants.wx_api.sendReq(req); } }); } }

 

③這時候就可以發起微信登錄了,但是要得到微信的返回結果,還需要下面的步驟

 

4.獲得微信調用的反饋

①在包名下新增wxapi文件夾(這個文件夾名字是微信官方規定的,必須一致)

 

②在wxapi文件夾下新增繼承於Activity並實現IWXAPIEventHandler接口的WXEntryActivity類(這個類名是微信官方規定的,必須一致)

 

 

③在eclipse中顯示結構如下:

 

④WXEntryActivity.java文件代碼如下:

public class WXEntryActivity extends Activity implements IWXAPIEventHandler { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Constants.wx_api.handleIntent(getIntent(), this); } //微信請求相應
 @Override public void onReq(BaseReq baseReq) { } //發送到微信請求的響應結果
 @Override public void onResp(BaseResp resp) { switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: Log.i("WXTest","onResp OK"); if(resp instanceof SendAuth.Resp){ SendAuth.Resp newResp = (SendAuth.Resp) resp; //獲取微信傳回的code
                    String code = newResp.code; Log.i("WXTest","onResp code = "+code); } break; case BaseResp.ErrCode.ERR_USER_CANCEL: Log.i("WXTest","onResp ERR_USER_CANCEL "); //發送取消
                break; case BaseResp.ErrCode.ERR_AUTH_DENIED: Log.i("WXTest","onResp ERR_AUTH_DENIED"); //發送被拒絕
                break; default: Log.i("WXTest","onResp default errCode " + resp.errCode); //發送返回
                break; } finish(); } }

 

5.在AndroidManifest.xml中對WXEntryActivity進行配置

①增加權限

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

 

②增加WXEntryActivity的配置

        <activity android:exported="true" android:name=".wxapi.WXEntryActivity" android:launchMode="singleTop" android:theme="@android:style/Theme.NoDisplay"/>  

 

③總體情況如截圖

 

6.編譯生成運行,即可發起微信登錄並得到微信返回。

如果還是不行,那么可能由以下問題引起:

1.app id是否正確?

2.包名是否和申請時填寫的一致?

3.應用簽名是否和申請時填寫的一致?(可以用簽名生成工具對比一下)通常可能發生的情況是,申請用的簽名包,調試用的非簽名包,這種情況很常見。

4.WXEntryActivity.java文件的位置是否正確

5.AndroidManifest.xml中的配置是否正確?

 

官方文檔:《移動應用微信登錄開發指南》

 

以上,發起微信授權登錄部分完。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM