Android Learning:微信第三方登錄


這兩天,解決了微信第三方授權登錄的問題,作為一個新手,想想也是一把辛酸淚。我想着,就把我的遇到的坑給大家分享一下,避免新手遇到我這樣的問題能夠順利避開。

步驟一 微信開發者平台

我開始的解決思路是,去微信開發者平台看API文檔。

這個API文檔的主要意思呢,有三點:

1、你得下載這幾樣東西(下載鏈接),一個是他的范例代碼,一個是他的簽名生成工具。

2、如果你自己的APP想要微信第三方授權,你得去申請一個APPID,這個APPID呢,就是微信給咱們APP分配的一個代號。當然微信不是免費給你服務,為了獲得這個第三方授權的功能,你得給微信交300塊錢。申請到這個授權之后,你需要填寫一個應用包名,和一個應用簽名

應用包名

應用簽名

使用簽名生成工具,輸入包名,查詢到應用簽名

 

3、然后打開DEMO

程序的入口WXEntryActivity是我們所最需要關注的 

    // 微信發送請求到第三方應用時,會回調到該方法
    @Override
    public void onReq(BaseReq req) {
        // TODO
    }

當點擊授權登陸的界面的時候,會自動調用這個onResp方法,所以我們可以在這里面取得所需要token。注意andorid里叫token,ios里面叫code,而不是因為sdk版本的問題,這是需要注意的。

    // 第三方應用發送到微信的請求處理后的響應結果,會回調到該方法
    @Override
    public void onResp(BaseResp resp) {
        int result = 0;
        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                result = R.string.errcode_success;
                /*獲取token*/
                SendAuth.Resp sendResp = (SendAuth.Resp) resp;
                String code = sendResp.token;
                Log.d("Tag", "code\t" + code);
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                result = R.string.errcode_cancel;
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                result = R.string.errcode_deny;
                break;
            default:
                result = R.string.errcode_unknown;
                break;
        }

 APP_ID 替換為你的應用從官方網站申請到的合法appId

public class Constants {
    // APP_ID 替換為你的應用從官方網站申請到的合法appId
    public static final String APP_ID = "wx77777";
}

 

// IWXAPI 是第三方app和微信通信的openapi接口
private IWXAPI api;
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
//發送授權登陸請求
api.sendReq(req);

這一步就是和微信要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.就可以調用接口獲得用戶基本信息了。具體返回參數什么的接入指南里面說的很清楚。至此微信授權基本是成功了。

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

而我們添加的這個keystore 也要符合一些規范所以要改一改。

不過在開發的過程中要注意一下debug keystore。

步驟二 Android studio如何生成keystore文件

第一步 創建簽名文件

第二步 填寫簽名參數

第三步 選擇構建類型

第四步 查看生成第apk文件

步驟三 Android studio如何定位keystore文件

在運行微信分享Demo及新浪微博分享Demo時,需要修改使用Demo中的debug.keystore才能運行授權及和分享

在進行Android開發中,所用到的工具,就Eclispse和Android Studio比較多。其中,使用Eclipse里修改debug.keystore的方式新浪微博文檔有介紹,在Eclipse里點擊"Windows-->Preferences-->Android-->Build",在右邊的"Custom debug keystore"選擇Demo中的debug.keystore即可。

在Android Studio中的做法是"Project Structure"中“Modules”中的應用的模塊。然后選擇"Signing",點擊"+"號,起名為“debug”,並在“Store File”里選擇Demo中的debug.keystore,如下圖

然后在選擇“Build Types”在“debug”中的"Signing Config"選擇上面配置的"debug",如下圖

點擊“OK”,重新編譯就可以了。

通過上面配置完后,會自動在項目模塊中的build.gradle里的android {}里生成

signingConfigs {
    debug {
        storeFile file('.keystore里文件路徑')
    }
}

以及在buildTypes里生成

debug {
    signingConfig signingConfigs.debug
}

當然啦,可以不用界面配置,直接在build.gradle里寫上面的配置也都OK的

步驟四 獲取簽名 填寫到微信開發者平台

接下來將定位到jks文件的工程燒寫到程序中,然后將簽名工具的MD碼填寫到微信開發者平台,就能調用第三方授權登陸了。

 

效果圖  

  

參考鏈接:

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

Android Studio修改debug.keystore

Android Studio 簽名打包過程圖解

 


免責聲明!

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



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