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.配置簽名。
完成上面的這些步驟後就實現友盟微信登入了
- 一 微信開發者平臺註冊軟體
首先,
其次建立應用,這裡需要準備很多東西,要求的還特別細緻,應用提交後還要等待稽核。如下圖
最後稽核通過就能看到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();
}
};