1. 程式人生 > >android 微信登入 友盟 v6.9.0

android 微信登入 友盟 v6.9.0

友盟最新版本6.9.0整合微信登入
首先說一下整合的步驟
1.到微信開發者平臺註冊軟體並獲取軟體的AppID和AppSecret
2 建立簽名檔案,配置簽名。並在微信開發者平臺註冊簽名信息。
3.建立友盟開發者賬號,建立應用,獲取appkey
4.下載微信登入相關的sdk,並整合到專案中
5.新增微信回撥activity
6.配置Android Manifest XML,註冊微信回撥activity,新增許可權
7.在application中初始化,配置微信平臺對應的軟體資訊(AppID和AppSecret)
8.配置簽名。
完成上面的這些步驟後就實現友盟微信登入了

  • 一 微信開發者平臺註冊軟體
    首先,
    到這裡
    註冊微信開發者賬號,並獲取開發者資質(花費300元),還要等待稽核
    其次建立應用,這裡需要準備很多東西,要求的還特別細緻,應用提交後還要等待稽核。如下圖
    這裡寫圖片描述
    最後稽核通過就能看到AppID和AppSecret了,如下圖:
    這裡寫圖片描述
    獲取到的AppSecret一定要記錄下來,平臺不會再顯示,所以如果你忘記了,平臺是看不到的,只能重置。切記!!
  • 二 建立簽名檔案,配置簽名。並在微信開發者平臺註冊簽名信息。
    簽名檔案的建立很簡單,可以通過Androidstudio建立,也可以通過第三方工具建立,建立完成後,將簽名檔案放入專案中
    這裡寫圖片描述

在gradle中配置

   signingConfigs {
        release {
            storeFile file('蔬菜配送系統.keystore'
) storePassword 'SCPSXT_Beta_CN_MB_V1.0' keyAlias '蔬菜配送系統' keyPassword 'SCPSXT_Beta_CN_MB_V1.0' }
} buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release }
debug { signingConfig signingConfigs.release } }

微信開發者平臺註冊簽名信息。 這個地方一定要注意 有坑!!!
這裡寫圖片描述

java.lang.Throwable: 錯誤碼:2002 錯誤資訊:授權失敗----[SA10001]許可權驗證失敗,請檢查你的簽名以及該平臺Appkey許可權.
解決方案:https://developer.umeng.com/docs/66632/detail/66787?um_channel=sdk

附一張出現上述問題的解決圖
這裡寫圖片描述

獲取軟體簽名的截圖:
這裡寫圖片描述

圖中圈住的就是應用簽名信息,將這個資料新增到微信開發平臺上,一個也不能錯,如果錯了,改正後,軟體可能也有問題,可能報2002錯誤。需要微信清除快取才可解決,所以一定要認真

  • 三.如果你沒有友盟的開發者賬號,就到這裡註冊。如果有開發者賬號就到這裡建立你的應用並得到appkey。
    建立應用
    這裡寫圖片描述
    注意:後臺的應用名與實際應用名和包名無關,建議命名為應用名+平臺(iOS/Android)。

  • 四.下載微信登入相關的sdk,並整合到專案中下載地址,把相關的檔案放到自己專案中對應的位置,我會將demo上傳到github上,不用下載這些SDK,直接在我專案裡拷貝就行了

  • 五.新增微信回撥activity
    這個地方有坑,請注意!!!
    包名目錄下,一定要在包名路徑下。建立wxapi資料夾,新建一個名為WXEntryActivity的activity繼承WXCallbackActivity。
    建立完目錄結構是這樣的
    這裡寫圖片描述

  • 六 配置Android Manifest XML,新增許可權,註冊微信回撥activity

需要新增的許可權

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

註冊微信回撥activity

<activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

這個WXEntryActivity在清單中的配置必須和上面的一模一樣

  • 七.在application中初始化,配置微信平臺對應的軟體資訊(AppID和AppSecret)

在Application中呼叫友盟的初始化介面:

 //初始化元件化基礎庫, 統計SDK/推送SDK/分享SDK都必須呼叫此初始化介面
        UMConfigure.init(this, "5b3a1f97a40fa369ea000044", 
                "", UMConfigure.DEVICE_TYPE_PHONE, "");

具體引數介紹
這裡寫圖片描述

配置微信平臺對應的軟體資訊(AppID和AppSecret)

 {
        PlatformConfig.setWeixin("wxdfeeca73484a5f0a", "cdba5aeeac2ea12d0072c79212a44233");
    }

第一個引數是軟體在微信開放平臺註冊後產生的AppID,第二個引數是AppSecret,關於這兩個引數上面有介紹

大功告成,下面開始呼叫微信的api實現微信授權,並獲取微信的資訊

   UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.WEIXIN, authListener);

下面是事件的監聽

   UMAuthListener authListener = new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA platform) {
            Toast.makeText(LoginActivity.this, "開始", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
            String unionid = data.get("unionid");
            showToast(unionid);
        }

        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {
            Toast.makeText(LoginActivity.this, "失敗:" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();
        }
    };