1. 程式人生 > >【轉載】 友盟社會化Android元件之第三方登入

【轉載】 友盟社會化Android元件之第三方登入

前段時間公司需要,逐步了新浪微博、騰訊qq、微信等授權登入驗證的問題。如果要一個個申請,看文件寫程式碼也是很多流程的。乾脆用友盟社會化Android元件之第三方登入。友盟是集成了這些平臺,還有其他主流的平臺的。我在這裡主要講一下友盟裡面微博登入。先看看友盟是怎麼介紹自已的。

一、友盟社會化分享介紹

友盟社會化分享元件,幫助移動應用快速具備微信分享,微博分享、登入、評論、喜歡等社會化元件功能,助力產品推廣,並提供實時、全面的社會化資料統計分析服務,是國內最大的社會化分享SDK。

支援各大社交平臺

精選國內外23個主流社交平臺,支援圖片、文字、圖文、音樂、視訊等多種內容的分享。

國內平臺:微信、朋友圈、QQ、Qzone、新浪微博、騰訊微博、人人、豆瓣、有道雲筆記、來往、易信、簡訊、郵件

國外平臺:Facebook、Twitter、Instagram、Google+、Line、Whatsapp、Tumblr、Pinterest、Evernote、Pocket、LIinkedIn、Flickr、Kakao Talk。

從這上面可以看出,支援平臺太多啦,自已有選擇開發就行。搞幾個申請、註冊、身份認證、應用稽核。。。你都會抓狂的。。


二、友盟開發

   友盟的註冊很簡單,有個郵箱就能註冊,註冊完不用身份認證那麼麻煩。不用稽核等。

2、友盟官方第三方文件支援:

三、友盟平臺裡面新浪微博操作

   這個開放平臺的註冊,一定要有開通微博賬號的賬戶。用個人或者企業級的。
   開通之後,先進行郵箱驗證:選擇個人或者企業。需要一系列的資料。
   身份驗證:個人和企業認證有區別。也是一系列的資料。

   搞定這些了,建立移動應用了。需要的資料很多,我在這裡列出幾個重點的:
   應用的包名:
   應用的簽名:
   android應用的下載地址:(一定是應用商店上線後的地址:例如,百度、91、安卓等,我是有百度開發者平臺上線應用的)
   應用介紹:
   應用圖示:三個(分別是16*16、80*80、120*120 單位px)
   應用介紹圖片:三張以上(300*450 單位px)

   ps:有這些資料就差不多了,圖片尺寸以及應用下載地址嚴格按照要求。個人開發一般人還真弄不了那麼多。
       提交需要稽核,最好在應用展示圖片中有用到分享到微博的例子,容易通過。稽核時間一天以內。

2、App Key以及App Secret配置到友盟平臺

   這上面搞定了之後,把上面申請到的App Key以及App Secret配置到友盟平臺。如下圖:
   新浪微博的配置不用在程式碼中配置,只需要在友盟的後臺。微信,qq需要在程式碼中配置。


3、新浪微博第三方登入程式碼的流程

這個流程在友盟文件中也有很詳細,我就不寫友盟那裡文件的東西了。寫了就有重複。就看看我的程式碼吧。不過我程式碼中還有qq,微信都在了。將就著看,感覺都還好理解。我只貼授權登入的了,分享、評論那些我刪了。

  1. <span style="font-size:18px;">package com.southgnss.umeng;  
  2. import java.io.File;  
  3. import java.util.Date;  
  4. import java.util.Map;  
  5. import android.app.Activity;  
  6. import android.content.Intent;  
  7. import android.graphics.BitmapFactory;  
  8. import android.os.Bundle;  
  9. import android.text.TextUtils;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.Toast;  
  14. import com.southgnss.umeng.commons.Constants;  
  15. import com.umeng.analytics.MobclickAgent;  
  16. import com.umeng.socialize.bean.SHARE_MEDIA;  
  17. import com.umeng.socialize.bean.SocializeEntity;  
  18. import com.umeng.socialize.bean.StatusCode;  
  19. import com.umeng.socialize.controller.UMServiceFactory;  
  20. import com.umeng.socialize.controller.UMSocialService;  
  21. import com.umeng.socialize.controller.listener.SocializeListeners.SocializeClientListener;  
  22. import com.umeng.socialize.controller.listener.SocializeListeners.UMAuthListener;  
  23. import com.umeng.socialize.controller.listener.SocializeListeners.UMDataListener;  
  24. import com.umeng.socialize.exception.SocializeException;  
  25. import com.umeng.socialize.sso.QZoneSsoHandler;  
  26. import com.umeng.socialize.sso.SinaSsoHandler;  
  27. import com.umeng.socialize.sso.UMQQSsoHandler;  
  28. import com.umeng.socialize.sso.UMSsoHandler;  
  29. import com.umeng.socialize.utils.Log;  
  30. import com.umeng.socialize.weixin.controller.UMWXHandler;  
  31. /** 
  32.  * @description 實現友盟第三方登入登出、獲取使用者資訊 
  33.  */
  34. publicclass LoginActivity extends Activity implements OnClickListener {  
  35.     // 整個平臺的Controller,負責管理整個SDK的配置、操作等處理
  36.     private UMSocialService mController = UMServiceFactory  
  37.             .getUMSocialService(Constants.DESCRIPTOR);  
  38.     private Button sinaLoginButton;  
  39.     private Button sinaLogoutButton;  
  40.     private Button qqLoginButton;  
  41.     private Button qqLogoutButton;  
  42.     private Button wechatLoginButton;  
  43.     private Button wechatLogoutButton;  
  44.     private Button shareButton;  
  45.     @SuppressWarnings("deprecation")  
  46.     @Override
  47.     protectedvoid onCreate(Bundle savedInstanceState) {  
  48.         super.onCreate(savedInstanceState);  
  49.         setContentView(R.layout.activity_main);  
  50.         sinaLoginButton = (Button) this.findViewById(R.id.btn_sina_login);  
  51.         sinaLogoutButton = (Button) this.findViewById(R.id.btn_sina_logout);  
  52.         qqLoginButton = (Button) this.findViewById(R.id.btn_qq_login);  
  53.         qqLogoutButton = (Button) this.findViewById(R.id.btn_qq_logout);  
  54.         shareButton = (Button) this.findViewById(R.id.btn_share);  
  55.         wechatLoginButton = (Button) this.findViewById(R.id.btn_wechat_login);  
  56.         wechatLogoutButton = (Button) this.findViewById(R.id.btn_wechat_logout);  
  57.         sinaLoginButton.setOnClickListener(this);  
  58.         sinaLogoutButton.setOnClickListener(this);  
  59.         qqLoginButton.setOnClickListener(this);  
  60.         qqLogoutButton.setOnClickListener(this);  
  61.         shareButton.setOnClickListener(this);  
  62.         wechatLoginButton.setOnClickListener(this);  
  63.         wechatLogoutButton.setOnClickListener(this);  
  64.         // 配置需要分享的相關平臺
  65.         configPlatforms();  
  66.         MobclickAgent.updateOnlineConfig(this);  
  67.     }  
  68.     @Override
  69.     protectedvoid onResume() {            
  70.         super.onResume();            
  71.         MobclickAgent.onResume(this);  
  72.     }          
  73.     @Override
  74.     protectedvoid onPause() {        
  75.         super.onPause();        
  76.         MobclickAgent.onPause(this);  
  77.     }    
  78.     /** 
  79.      * 配置分享平臺引數 
  80.      */
  81.     privatevoid configPlatforms() {  
  82.         // 新增新浪sso授權
  83.         mController.getConfig().setSsoHandler(new SinaSsoHandler());  
  84.         // 新增QQ、QZone平臺
  85.         addQQQZonePlatform();  
  86.         // 新增微信、微信朋友圈平臺
  87.         addWX