1. 程式人生 > >android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法

android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法

nta 社會 四大 線程池 down 混合app value int ring

  • 技術分享
    技術分享
    Leaning_wk每一次的進步都會拉近與成功的距離!
    帳號設置退出
關閉

qq_15855289的博客

  • 技術分享目錄視圖
  • 技術分享摘要視圖
  • 技術分享訂閱
異步贈書:Kotlin領銜10本好書 免費直播:AI時代,機器學習如何入門? 程序員8月書訊 每周薦書:Java Web、Python極客編程(評論送書)

android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法

標簽: android友盟第三方登錄分享微信登錄回調問題
技術分享 分類:

目錄(?)[+]

這裏介紹微信和新浪登錄。微信登錄和新浪登錄都需要申請第三方賬號。可以參考官方文檔http://dev.umeng.com/social/android/operation#2還是很清晰的。

新浪微博開放平臺http://open.weibo.com/有賬號就可以,經常刷微博的小夥伴可以直接登錄嘍,註意修改安全域名同時確保授權回調頁與代碼中配置一致。

登錄微信開放平臺https://open.weixin.qq.com/官網, 審核通過後獲取到微信AppID及AppSecret(註意保存好,平臺不會再顯示忘了需要重置),需要微信登錄功能,需要申請微信登錄權限

獲取微信登錄權限需要收取一定費用,貌似300。一直沒舍得,還好做項目的時候用到獲得了,土豪隨意技術分享

技術分享

下面說代碼實現

到友盟官網http://www.umeng.com/下載需要的SDK包。copy其中的jar包等到自己的項目中。

1、添加回調Activity

包名目錄下創建wxapi文件夾,新建一個名為WXEntryActivity的activity繼承WXCallbackActivity。這裏註意一定是包名路徑下。同理新浪微博也需要一個回調的Activity,與微信不同的是它只需要在包名目錄下建立一個名為WBShareActivity類即可,不用建立文件夾,該類繼承WBShareCallBackActivity

技術分享 技術分享

2、權限及其他maifest中的配置

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

相關Activity註冊

新浪微博:(精簡版不需要)以下方式註冊若無法find請把包名寫全。

 <activity
    android:name=".WBShareActivity"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait" >
 <intent-filter>
 <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
 <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
 </activity>
 <activity
    android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
    android:configChanges="keyboardHidden|orientation"
    android:windowSoftInputMode="adjustResize"
    android:exported="false" >
 </activity>
 <service android:name="com.sina.weibo.sdk.net.DownloadService"
          android:exported="false"></service>

微信:

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

分享編輯頁(只有新浪微博精簡版,豆瓣人人騰訊微博需要):

 <activity
        android:name="com.umeng.socialize.editorpage.ShareActivity"
        android:theme="@style/Theme.UMDefault"
        android:excludeFromRecents="true"/>

友盟Appkey及相關第三方key配置

在AndroidManifest.xml中設置友盟Appkey

 
 <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf">
         </meta-data>


3、在項目的application類中配置第三方信息

    {
      // <!-- 微信平臺 --> appid appsecret
      PlatformConfig.setWeixin("替換成自己appid","替換成自己的appsecret");
      // <!-- 新浪微博 --> appkey appsecret 
      PlatformConfig.setSinaWeibo("替換成自己appid","替換成自己的appsecret");
      Config.REDIRECT_URL = "新浪後臺配置的回調地址";
      // <!-- QQ、Qzone -->appid appkey
      PlatformConfig.setQQZone("替換成自己appid","替換成自己的appsecret");
   }
在application的oncreat方法中初始化
UMShareAPI.get(this);

技術分享

4、登錄實現

private UMShareAPI mShareAPI = null;
private SHARE_MEDIA platform = null;
mShareAPI = UMShareAPI.get(this);
點擊事件:

case R.id.login_img_weibo:
    platform = SHARE_MEDIA.SINA;
    mShareAPI.doOauthVerify(LoginActivity.this, platform,
            umAuthListener);
    break;
case R.id.login_img_weixin:
    platform = SHARE_MEDIA.WEIXIN;
    mShareAPI.doOauthVerify(LoginActivity.this, platform,
            umAuthListener);
    break;
下面new
umAuthListener
private UMAuthListener umAuthListener = new UMAuthListener() {

    @Override
    public void onComplete(SHARE_MEDIA platform, int action,
                           Map<String, String> data) {
        if(platform == SHARE_MEDIA.WEIXIN){
           //unionid:(6.2以前用unionid)uid
           uid = data.get("unionid");
        }else{
            uid = data.get("uid");
        }
        if(!CheckUtils.isEmpty(uid)){
            //如果uid不為空即回調授權成功,則可以調接口告訴後臺此時的第三方uid,後臺判斷此唯一標識值是否存在即判斷用戶是否用
            //第三方登錄過,如果登錄過直接進入主界面, 沒有登錄過則後臺存儲該值並進入註冊界面進行手機號綁定註冊
            judgeUMLogin();,如果登錄
        }else{
            Toast.makeText(getApplicationContext(), "暫無法使用該登錄方式",
                    Toast.LENGTH_SHORT).show();
        }
        Toast.makeText(getApplicationContext(), "授權成功",
                Toast.LENGTH_SHORT).show();
        Log.d("user info", "user info:" + data.toString());
    }

    @Override
    public void onError(SHARE_MEDIA platform, int action, Throwable t) {
        Toast.makeText(getApplicationContext(), "Authorize fail",
                Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancel(SHARE_MEDIA platform, int action) {
        Toast.makeText(getApplicationContext(), "Authorize cancel",
                Toast.LENGTH_SHORT).show();
    }
};

5、分享

回調相關配置

如果使用的是qq或者新浪精簡版jar,需要在您使用分享或授權的Activity(fragment不行)中添加如下回調代碼:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

}

分享相關代碼調用

打開分享面板

可以通過如下代碼打開分享面板選擇頁

new ShareAction(MainActivity.this)
    .withText("hello")
    .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN)
    .setCallback(umShareListener)
    .open();

其中umShareListener為回調監聽,相關分享結果都在回調監聽中獲取

構建如下,其中分享成功會回調onComplete,取消分享回調onCancel,分享錯誤回調onError,對應的錯誤信息可以用過onError的Throwable參數來打印

private UMShareListener umShareListener = new UMShareListener() {
    @Override
    public void onResult(SHARE_MEDIA platform) {
        Log.d("plat","platform"+platform);

            Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onError(SHARE_MEDIA platform, Throwable t) {
        Toast.makeText(MainActivity.this,platform + " 分享失敗啦", Toast.LENGTH_SHORT).show();
        if(t!=null){
            Log.d("throw","throw:"+t.getMessage());
        }
    }

    @Override
    public void onCancel(SHARE_MEDIA platform) {
        Toast.makeText(MainActivity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show();
    }
};


直接分享接口

對於需要不經過分享面板選擇頁,直接通過按鈕實現某個平臺的分享跳轉操作的開發者,可以調用下面的代碼實現

new ShareAction(MainActivity.this)
                .setPlatform(SHARE_MEDIA.QQ)
                .withText("hello")
                .setCallback(umShareListener)
                .share();

具體分享結果獲取方法與使用分享面板相同,這裏不再復述

登錄不回調可能的情況:

1、WXEntryActivity
這個類的路徑問題

2、微信官網的配置要求很嚴格 程序目錄的包名必須與配置文件的包名還有微信開放平臺配置的包名完全一致。否則會出現回調無反應現象。(遇到過的)

3、微信未獲取登錄權限。(一般交錢審核通過就自動獲取了登錄權限)
1
0

相關文章推薦
  • ? 友盟社會化分享 ### 微信發送被拒絕 微信與朋友圈點擊無響應
  • ? SDCC 2017之大數據技術實戰線上峰會
  • ? Android微信、朋友圈分享回調函數無響應
  • ? Hadoop大數據從入門到精通知識體系詳解
  • ? 微信分享配置回調Activity中android:exported="true"的一個坑
  • ? SDCC 2017之區塊鏈技術實戰線上峰會
  • ? Android利用微信SDK分享到微信教程,回調分享結果錯誤解決和註意點
  • ? C++跨平臺開發和ffmpeg,opencv音視頻技術
  • ? Android利用微信SDK分享到微信教程,回調分享結果錯誤解決和註意點
  • ? 史上最全Android基礎知識總結
  • ? 關於微信登錄和友盟第三方微信登錄那些坑
  • ? 機器學習需要的數學知識
  • ? 友盟之微信授權登陸總結(微信授權回調響應問題)
  • ? getPackageInfo has exception: com.qzone getApn has exception: No permission to write
  • ? umeng分享到QQ,分享成功,回調失敗。
  • ? QQ/QZONE 分享之後不回調的問題
查看評論
1樓 li1570608 2017-06-10 16:52發表 [回復]
技術分享
回調出現問題,可是貼主說的問題都好著
發表評論
  • 用 戶 名:
  • Leaning_wk
  • 評論內容:
  • 技術分享
* 以上用戶言論只代表其個人觀點,不代表CSDN網站的觀點或立場
    個人資料
技術分享
ZhDan91
    • 訪問:4248次
    • 積分:218
    • 等級: 技術分享
    • 排名:千裏之外
    • 原創:18篇
    • 轉載:0篇
    • 譯文:0篇
    • 評論:1條
    文章搜索
    文章分類
  • native app(11)
  • 前端開發(4)
  • 混合app(0)
  • 測試(0)
    文章存檔
  • 2017年05月(3)
  • 2017年03月(6)
  • 2017年02月(3)
  • 2016年12月(3)
  • 2015年09月(1)
展開
    閱讀排行
  • android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法(2327)
  • android首次安裝時進入wizard否則主界面Viewpager+Fragment+RadioGroup(296)
  • 自定義dialog(212)
  • android studio中矢量圖的使用(157)
  • httpclient客戶端thread+handler+message(get)(146)
  • android中百度定位、城市選擇列表,右側字母展示(135)
  • 自己對於框架架構的學習思路(113)
  • jar包的使用(maven依賴庫)(112)
  • Retrofit網絡連接(101)
  • Kotlin初步使用(91)
    評論排行
  • android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法(1)
  • Kotlin初步使用(0)
  • css樣式基礎學習筆記--形式和選擇器(0)
  • 前端開發基礎學習筆記html標簽(0)
  • android中百度地圖撒點標識後臺附近的人坐標點及用戶頭像(0)
  • android studio中矢量圖的使用(0)
  • 3D字母滑動選擇城市列表(0)
  • android中百度定位、城市選擇列表,右側字母展示(0)
  • 自定義dialog(0)
  • android首次安裝時進入wizard否則主界面Viewpager+Fragment+RadioGroup(0)
    推薦文章
    • * CSDN日報20170828——《4個方法快速打造你的閱讀清單》
    • * Android檢查更新下載安裝
    • * 動手打造史上最簡單的 Recycleview 側滑菜單
    • * TCP網絡通訊如何解決分包粘包問題
    • * 程序員的八重境界
    • * 四大線程池詳解
    最新評論
  • android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法li1570608
公司簡介|招賢納士|廣告服務|聯系方式|版權聲明|法律顧問|問題報告|合作夥伴|論壇反饋
網站客服雜誌客服微博客服[email protected]400-660-0108|北京創新樂知信息技術有限公司 版權所有|江蘇知之為計算機有限公司|江蘇樂知網絡技術有限公司

android使用友盟實現第三方登錄、分享以及微信回調無反應問題解決辦法