首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

友盟社會化分享:微信第三方登入整合完整步驟與程式碼範例

     編輯:Java 相關知識

前置準備

  1. 獲取應用簽名:使用友盟提供的工具或命令 keytool -list -v -keystore xxx.keystore 獲取 SHA1 指紋。
  2. 微信開放平台配置:將簽名、包名填入微信開放平台「移動應用」配置,獲得 AppID、AppSecret。
  3. 友盟後台綁定:在友盟社交化分享後台添加微信平台,填入 AppID/AppSecret。

Android 客戶端整合

1. 依賴配置

// build.gradle
implementation 'com.umeng.sdk:share:7.x.x'
implementation 'com.umeng.sdk:wechat:7.x.x' // 微信模組

2. AndroidManifest 權限與組件






3. 初始化配置

// Application 或 MainActivity onCreate
PlatformConfig.setWeixin("你的AppID", "你的AppSecret");
UMShareAPI.get(this); // 註冊

4. 發起授權登入

// 登入按鈕點擊
UMShareAPI.get(this).doOauthVerify(this, SHARE_MEDIA.WEIXIN, new UMAuthListener() {
    @Override public void onComplete(SHARE_MEDIA platform, int action, Map data) {
        // 關鍵:授權成功後,必須再次調用 getPlatformInfo 獲取用戶詳情
        UMShareAPI.get(MainActivity.this).getPlatformInfo(MainActivity.this, platform, new UMAuthListener() {
            @Override public void onComplete(SHARE_MEDIA p, int a, Map userData) {
                // userData 包含:openid, unionid, nickname, headimgurl, gender, city 等
                String openid = userData.get("openid");
                String nickname = userData.get("name");
                String avatar = userData.get("iconurl");
                // TODO: 送往後端換取自有 Token、綁定賬號等
            }
            @Override public void onError(SHARE_MEDIA p, int a, Throwable t) { /* 獲取信息失敗 */ }
            @Override public void onCancel(SHARE_MEDIA p, int a) { /* 用戶取消 */ }
        });
    }
    @Override public void onError(SHARE_MEDIA p, int a, Throwable t) { /* 授權失敗 */ }
    @Override public void onCancel(SHARE_MEDIA p, int a) { /* 用戶取消授權 */ }
});

5. 回調 Activity 必須轉發

// wxapi/WXEntryActivity.java
public class WXEntryActivity extends WXCallbackActivity {
    // 無需額外代碼,父類已處理微信回調轉發給 UMShareAPI
}

常見坑點與解決

服務端建議流程

  1. 客戶端傳送 code 或 openid + unionid 到後端。
  2. 後端攜帶 AppSecret 向微信換取 access_token、用戶詳情。
  3. 根據 unionid(跨應用唯一)或 openid 查找/創建本地用戶。
  4. 簽發自有 JWT/Session,返回客戶端完成登入。

總結

友盟微信登入核心在於「授權 → 獲取信息」雙步驟回調,配合正確的簽名、包名、回調 Activity 配置。服務端務必使用 unionid 做用戶唯一標識,支援多應用互通。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因解決
授權成功但獲取用戶信息為空未在 onComplete 中調用 getPlatformInfo雙重回調:授權成功 → 立即調用 getPlatformInfo
簽名不匹配打包簽名與微信後台配置不一致確保發布簽名、測試簽名均已配置
回調不觸發WXEntryActivity 包名錯誤、未 exported、或未繼承 WXCallbackActivity檢查 Manifest 配置完全符合文檔