Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實際開發問題09_微信的授權登錄

Android實際開發問題09_微信的授權登錄

編輯:關於Android編程

研究微信的授權登錄就感覺最開始學習安卓一樣,什麼也不懂,做個東西十分費力(我只想說微信的文檔相當亂)

正文開始:微信的授權登錄,准備工作就和官網上面差不多,到官網注冊開發者,掏錢.然後創建應用,

創建android應用需要兩個參數:

一個是包名(AndroidManifest文件中的數據package)

一個是簽名:可以通過軟件獲取(詳見下面附錄)

然後就可以獲取一個appid和appsercet.

按照官網所講,appsercet是很重要的東西,最好不要放到客戶端,也就是我們的app中,如果你要是集成三方此事就另當別論了

我就只做了前面,也就是通過appid進行授權,獲取code之後發到服務器,剩下的事情服務器自行完成.

下面主要說下如何獲取code.

1.發送請求

 

    private String APPID = "wx*************";

    public static IWXAPI iwxapi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //這裡是最開始注冊的
       iwxapi = WXAPIFactory.createWXAPI(this, APPID);
        iwxapi.registerApp(APPID);
        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //發送請求
               SendAuth.Req req = new SendAuth.Req();
                req.scope = "snsapi_userinfo";
                req.state = "wechat_sdk_demo_test";
                iwxapi.sendReq(req);
            }
        });
    }
上面的東西都和官網和百度出來的差不多.然後就是請求做完了,需要回調了

 

2.回調

這個地方是非常注意的,哪怕你使用第三方也必須十分注意,是在你的包目錄下面,新建一個包叫做"wxapi".然後在裡面創建一個繼承了Activity的WXEntryActivity.最後在配置文件中聲明並且加上"exported="true""這個,上面的意思也就是WXEntryActivity的路徑必須是包名.wxapi.WXEntryActivity

下面是我的WXEntryActivity,並沒有像官網所說實現什麼IWXEVENTHANDLER.

 

public class WXEntryActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        handleIntent(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {
        SendAuth.Resp resp = new SendAuth.Resp(intent.getExtras());
        if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
            //在這裡就可以獲取到微信返回的東西了,想要怎麼處理就在這寫好就可以了
        }
finish(); 
}}

最後說明下,為了不展現WXEntryActivity,設置activity的主題為@android:style/Theme.Translucent,並且finish()掉.官網上面寫的研究了一整天就是沒有任何返回值,無奈放棄了

 


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved