【转载】 友盟社会化Android组件之第三方登录

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

前段时间公司需要,逐步了新浪微博、腾讯qq、微信等授权登录验证的问题。如果要一个个申请,看文档写代码也是很多流程的。干脆用友盟社会化Android组件之第三方登录。友盟是集成了这些平台,还有其他主流的平台的。我在这里主要讲一下友盟里面微博登录。先看看友盟是怎么介绍自已的。

一、友盟社会化分享介绍

友盟社会化分享组件,帮助移动应用快速具备微信分享,微博分享、登录、评论、喜欢等社会化组件功能,助力产品推广,并提供实时、全面的社会化数据统计分析服务,是国内最大的社会化分享SDK。

支持各大社交平台

精选国内外23个主流社交平台,支持图片、文字、图文、音乐、视频等多种内容的分享。

国内平台:微信、朋友圈、QQ、Qzone、新浪微博、腾讯微博、人人、豆瓣、有道云笔记、来往、易信、短信、邮件

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

从这上面可以看出,支持平台太多啦,自已有选择开发就行。搞几个申请、注册、身份认证、应用审核。。。你都会抓狂的。。


二、友盟开发

1、注册友盟的开放平台的网址:http://www.umeng.com/
   友盟的注册很简单,有个邮箱就能注册,注册完不用身份认证那么麻烦。不用审核等。

2、友盟官方第三方文档支持:
    http://dev.umeng.com/social/android/operation
    http://dev.umeng.com/social/android/login-page


三、友盟平台里面新浪微博操作

1、注册新浪微博开放的网址:http://open.weibo.com/

   这个开放平台的注册,一定要有开通微博账号的账户。用个人或者企业级的。
   开通之后,先进行邮箱验证:选择个人或者企业。需要一系列的资料。
   身份验证:个人和企业认证有区别。也是一系列的资料。

   搞定这些了,创建移动应用了。需要的资料很多,我在这里列出几个重点的:
   应用的包名:
   应用的签名:
   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,微信都在了。将就着看,感觉都还好理解。我只贴授权登录的了,分享、评论那些我删了。

[java]  view plain  copy
  1. <span style="font-size:18px;">package com.southgnss.umeng;  
  2.   
  3. import java.io.File;  
  4. import java.util.Date;  
  5. import java.util.Map;  
  6.   
  7. import android.app.Activity;  
  8. import android.content.Intent;  
  9. import android.graphics.BitmapFactory;  
  10. import android.os.Bundle;  
  11. import android.text.TextUtils;  
  12. import android.view.View;  
  13. import android.view.View.OnClickListener;  
  14. import android.widget.Button;  
  15. import android.widget.Toast;  
  16.   
  17. import com.southgnss.umeng.commons.Constants;  
  18. import com.umeng.analytics.MobclickAgent;  
  19. import com.umeng.socialize.bean.SHARE_MEDIA;  
  20. import com.umeng.socialize.bean.SocializeEntity;  
  21. import com.umeng.socialize.bean.StatusCode;  
  22. import com.umeng.socialize.controller.UMServiceFactory;  
  23. import com.umeng.socialize.controller.UMSocialService;  
  24. import com.umeng.socialize.controller.listener.SocializeListeners.SocializeClientListener;  
  25. import com.umeng.socialize.controller.listener.SocializeListeners.UMAuthListener;  
  26. import com.umeng.socialize.controller.listener.SocializeListeners.UMDataListener;  
  27. import com.umeng.socialize.exception.SocializeException;  
  28. import com.umeng.socialize.sso.QZoneSsoHandler;  
  29. import com.umeng.socialize.sso.SinaSsoHandler;  
  30. import com.umeng.socialize.sso.UMQQSsoHandler;  
  31. import com.umeng.socialize.sso.UMSsoHandler;  
  32. import com.umeng.socialize.utils.Log;  
  33. import com.umeng.socialize.weixin.controller.UMWXHandler;  
  34.   
  35. /** 
  36.  * @description 实现友盟第三方登录注销、获取用户信息 
  37.  */  
  38. public class LoginActivity extends Activity implements OnClickListener {  
  39.     // 整个平台的Controller,负责管理整个SDK的配置、操作等处理  
  40.     private UMSocialService mController = UMServiceFactory  
  41.             .getUMSocialService(Constants.DESCRIPTOR);  
  42.   
  43.     private Button sinaLoginButton;  
  44.     private Button sinaLogoutButton;  
  45.     private Button qqLoginButton;  
  46.     private Button qqLogoutButton;  
  47.     private Button wechatLoginButton;  
  48.     private Button wechatLogoutButton;  
  49.     private Button shareButton;  
  50.   
  51.     @SuppressWarnings("deprecation")  
  52.     @Override  
  53.     protected void onCreate(Bundle savedInstanceState) {  
  54.         super.onCreate(savedInstanceState);  
  55.         setContentView(R.layout.activity_main);  
  56.   
  57.         sinaLoginButton = (Button) this.findViewById(R.id.btn_sina_login);  
  58.         sinaLogoutButton = (Button) this.findViewById(R.id.btn_sina_logout);  
  59.         qqLoginButton = (Button) this.findViewById(R.id.btn_qq_login);  
  60.         qqLogoutButton = (Button) this.findViewById(R.id.btn_qq_logout);  
  61.         shareButton = (Button) this.findViewById(R.id.btn_share);  
  62.         wechatLoginButton = (Button) this.findViewById(R.id.btn_wechat_login);  
  63.         wechatLogoutButton = (Button) this.findViewById(R.id.btn_wechat_logout);  
  64.           
  65.         sinaLoginButton.setOnClickListener(this);  
  66.         sinaLogoutButton.setOnClickListener(this);  
  67.         qqLoginButton.setOnClickListener(this);  
  68.         qqLogoutButton.setOnClickListener(this);  
  69.         shareButton.setOnClickListener(this);  
  70.         wechatLoginButton.setOnClickListener(this);  
  71.         wechatLogoutButton.setOnClickListener(this);  
  72.   
  73.         // 配置需要分享的相关平台  
  74.         configPlatforms();  
  75.   
  76.         MobclickAgent.updateOnlineConfig(this);  
  77.     }  
  78.       
  79.     @Override  
  80.     protected void onResume() {            
  81.         super.onResume();            
  82.         MobclickAgent.onResume(this);  
  83.     }          
  84.   
  85.     @Override  
  86.     protected void onPause() {        
  87.         super.onPause();        
  88.         MobclickAgent.onPause(this);  
  89.     }    
  90.   
  91.     /** 
  92.      * 配置分享平台参数 
  93.      */  
  94.     private void configPlatforms() {  
  95.         // 添加新浪sso授权  
  96.         mController.getConfig().setSsoHandler(new SinaSsoHandler());  
  97.   
  98.         // 添加QQ、QZone平台  
  99.         addQQQZonePlatform();  
  100.   
  101.         // 添加微信、微信朋友圈平台  
  102.         addWXPlatform();  
  103.   
  104.     }  
  105.   
  106.   
  107.     /** 
  108.      * 添加所有的平台</br> 
  109.      */  
  110.     private void addCustomPlatforms() {  
  111.         // 添加微信平台  
  112.         addWXPlatform();  
  113.         // 添加QQ平台  
  114.         addQQQZonePlatform();  
  115.           
  116.         mController.getConfig().setPlatforms(SHARE_MEDIA.WEIXIN,  
  117.                 SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE,  
  118.                 SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT);  
  119.         mController.openShare(LoginActivity.thisfalse);  
  120.     }  
  121.   
  122.     /** 
  123.      * @功能描述 : 添加微信平台分享 
  124.      * @return 
  125.      */  
  126.     private void addWXPlatform() {  
  127.         // 注意:在微信授权的时候,必须传递appSecret  
  128.         // wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID  
  129.         String appId = "wxc8f10d692edf9f5f";  
  130.         String appSecret = "d4624c36b6795d1d99dcf0547af5443d";  
  131.         // 添加微信平台  
  132.         UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this, appId,  
  133.                 appSecret);  
  134.         wxHandler.addToSocialSDK();  
  135.   
  136.         // 支持微信朋友圈  
  137. //      UMWXHandler wxCircleHandler = new UMWXHandler(LoginActivity.this,  
  138. //              appId, appSecret);  
  139. //      wxCircleHandler.setToCircle(true);  
  140. //      wxCircleHandler.addToSocialSDK();  
  141.     }  
  142.   
  143.     /** 
  144.      * @功能描述 : 添加QQ平台支持 QQ分享的内容, 包含四种类型, 即单纯的文字、图片、音乐、视频. 参数说明 : title, summary, 
  145.      *       image url中必须至少设置一个, targetUrl必须设置,网页地址必须以"http://"开头 . title : 
  146.      *       要分享标题 summary : 要分享的文字概述 image url : 图片地址 [以上三个参数至少填写一个] targetUrl 
  147.      *       : 用户点击该分享时跳转到的目标地址 [必填] ( 若不填写则默认设置为友盟主页 ) 
  148.      * @return 
  149.      */  
  150.     private void addQQQZonePlatform() {  
  151.         String appId = "100424468";  
  152.         String appKey = "c7394704798a158208a74ab60104f0ba";  
  153.         // 添加QQ支持, 并且设置QQ分享内容的target url  
  154.         UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(LoginActivity.this,  
  155.                 appId, appKey);  
  156. //      qqSsoHandler.setTargetUrl("http://www.umeng.com");  
  157. //      qqSsoHandler.addToSocialSDK();  
  158.   
  159.         // 添加QZone平台  
  160.         QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(  
  161.                 LoginActivity.this, appId, appKey);  
  162. //      qZoneSsoHandler.addToSocialSDK();  
  163.     }  
  164.   
  165.   
  166.     @Override  
  167.     public void onClick(View v) {  
  168.         int nid = v.getId();  
  169.         if (nid == R.id.btn_sina_login) {  
  170.             login(SHARE_MEDIA.SINA);  
  171.             return;  
  172.         }else if (nid == R.id.btn_qq_login) {  
  173.             login(SHARE_MEDIA.QQ);  
  174.             return;  
  175.         }else if (nid == R.id.btn_wechat_login) {  
  176.             login(SHARE_MEDIA.WEIXIN);  
  177.             return;  
  178.         }else if (nid == R.id.btn_sina_logout) {  
  179.             logout(SHARE_MEDIA.SINA);  
  180.             return;  
  181.         }else if (nid == R.id.btn_qq_logout) {  
  182.             logout(SHARE_MEDIA.QQ);  
  183.             return;  
  184.         }else if (nid == R.id.btn_wechat_logout) {  
  185.             logout(SHARE_MEDIA.WEIXIN);  
  186.             return;  
  187.         }  
  188.     }  
  189.   
  190.     /** 
  191.      * 授权。如果授权成功,则获取用户信息 
  192.      *  
  193.      * @param platform 
  194.      */  
  195.     private void login(final SHARE_MEDIA platform) {  
  196.         mController.doOauthVerify(LoginActivity.this, platform,  
  197.                 new UMAuthListener() {  
  198.   
  199.                     @Override  
  200.                     public void onStart(SHARE_MEDIA platform) {  
  201.                         Toast.makeText(LoginActivity.this"授权开始",  
  202.                                 Toast.LENGTH_SHORT).show();  
  203.                     }  
  204.   
  205.                     @Override  
  206.                     public void onError(SocializeException e,  
  207.                             SHARE_MEDIA platform) {  
  208.                         Toast.makeText(LoginActivity.this"授权失败",  
  209.                                 Toast.LENGTH_SHORT).show();  
  210.                     }  
  211.   
  212.                     @Override  
  213.                     public void onComplete(Bundle value, SHARE_MEDIA platform) {  
  214.                         Toast.makeText(LoginActivity.this"授权完成",  
  215.                                 Toast.LENGTH_LONG).show();  
  216.                         // 获取uid  
  217.                         String uid = value.getString("uid");  
  218.                         if (!TextUtils.isEmpty(uid)) {  
  219.                             // uid不为空,获取用户信息  
  220.                             getUserInfo(platform);  
  221.                         } else {  
  222.                             Toast.makeText(LoginActivity.this"授权失败...",  
  223.                                     Toast.LENGTH_LONG).show();  
  224.                         }  
  225.                     }  
  226.   
  227.                     @Override  
  228.                     public void onCancel(SHARE_MEDIA platform) {  
  229.                         Toast.makeText(LoginActivity.this"授权取消",  
  230.                                 Toast.LENGTH_SHORT).show();  
  231.                     }  
  232.                 });  
  233.     }  
  234.   
  235.     /** 
  236.      * 获取用户信息 
  237.      *  
  238.      * @param platform 
  239.      */  
  240.     private void getUserInfo(SHARE_MEDIA platform) {  
  241.         mController.getPlatformInfo(LoginActivity.this, platform,  
  242.                 new UMDataListener() {  
  243.   
  244.                     @Override  
  245.                     public void onStart() {  
  246.   
  247.                     }  
  248.   
  249.                     @Override  
  250.                     public void onComplete(int status, Map<String, Object> info) {  
  251. //                       String showText = "";  
  252. //                       if (status == StatusCode.ST_CODE_SUCCESSED) {  
  253. //                       showText = "用户名:" +  
  254. //                       info.get("screen_name").toString();  
  255. //                       Log.d("#########", "##########" + info.toString());  
  256. //                       } else {  
  257. //                       showText = "获取用户信息失败";  
  258. //                       }  
  259.   
  260.                         if (info != null) {  
  261.                             Toast.makeText(LoginActivity.this, info.toString(),Toast.LENGTH_SHORT).show();  
  262.                         }  
  263.                     }  
  264.                 });  
  265.     }  
  266.       
  267.     /** 
  268.      * 注销本次登陆 
  269.      * @param platform 
  270.      */  
  271.     private void logout(final SHARE_MEDIA platform) {  
  272.         mController.deleteOauth(LoginActivity.this, platform, new SocializeClientListener() {  
  273.               
  274.             @Override  
  275.             public void onStart() {  
  276.                   
  277.             }  
  278.               
  279.             @Override  
  280.             public void onComplete(int status, SocializeEntity entity) {  
  281.                 String showText = "解除" + platform.toString() + "平台授权成功";  
  282.                 if (status != StatusCode.ST_CODE_SUCCESSED) {  
  283.                     showText = "解除" + platform.toString() + "平台授权失败[" + status + "]";  
  284.                 }  
  285.                 Toast.makeText(LoginActivity.this, showText, Toast.LENGTH_SHORT).show();  
  286.             }  
  287.         });  
  288.     }  
  289.       
  290.   
  291.     // 如果有使用任一平台的SSO授权, 则必须在对应的activity中实现onActivityResult方法, 并添加如下代码  
  292.     @Override  
  293.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  294.         super.onActivityResult(requestCode, resultCode, data);  
  295.         // 根据requestCode获取对应的SsoHandler,返回一定是requestCode  
  296.         UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode);  
  297.         if (ssoHandler != null) {  
  298.             ssoHandler.authorizeCallBack(requestCode, resultCode, data);  
  299.         }  
  300.     }  
  301. }  
  302. </span>  

这上面代码我在测试时候,微博是成功的。然后qq那个密钥不行,我注释掉了配置到平台的代码。微信那个审核最严格,没有App Key以及App Secret是行不通。我的那个还在微信那边审核,开通那个开发者身份资质认证需要300元的。一堆资料填写审核。。。

实现效果如下:

这张是微博授权界面



授权通过返回的数据:



最后一张是,我在友盟官网有选择性下载的一个demo的界面。那个友盟demo我也有源码,现在懂得怎样开发了。



四、开发过程中遇到的问题:

1、编译出现以下错误
[2015-11-27 15:05:23 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/sina/sso/RemoteSSO;
[2015-11-27 15:05:23 - SouthGnssServer] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/sina/sso/RemoteSSO;
出现这个是有重复的库,删掉一个就可以了。如下两张图的比较。

           


                 


一是没有集成到一个SocialSDK_Sina.jar里面,放在外面的包下面com.sina.sso,这个需要额外添加这个包下.aidl文件。包名还是这个com.sina.sso。不能变。
二是有集成SocialSDK_Sina.jar里面。这个不用再外面添加了。如有添加,就会出现编译错误。


2、带签名调试的问题,解决办法如下:(我也是网上找的资料如下,个人觉得写的总结最清晰)

修改Android签名证书keystore的密码、别名alias以及别名密码

之前在测试Eclipse ADT的Custom debug keystore自定义调试证书的时候,发过一篇关于调试证书规格的博文:Eclipse ADT的Custom debug keystore所需证书规格,提到过自定义调试证书的密码和alias命名以及alias密码都是有规矩的。其实Android应用开发接入各种SDK时会发现,有很多SDK是需要靠package name和keystore的指纹hash来识别的(百度地图SDK、Facebook SDK等等…),这样如果使用默认自动生成的debug keystore的话就会给开发调试工作带来一些麻烦。这时可以通过修改正式的release keystore,生成一份“遵守规矩”的临时自定义调试证书给开发时用,就方便多了,具体方法如下:

1. 首先当然是先复制一份正式证书出来作为要修改为的临时调试证书。

2. 修改keystore密码的命令(keytool为JDK带的命令行工具):
keytool -storepasswd -keystore my.keystore
其中,my.keystore是复制出来的证书文件,执行后会提示输入证书的当前密码,和新密码以及重复新密码确认。这一步需要将密码改为android。

3. 修改keystore的alias:
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
这一步中,my_name是证书中当前的alias,-destalias指定的是要修改为的alias,这里按规矩来,改为androiddebugkey!这个命令会先后提示输入keystore的密码和当前alias的密码。

4. 修改alias的密码:
keytool -keypasswd -keystore my.keystore -alias androiddebugkey

这一步执行后会提示输入keystore密码,alias密码,然后提示输入新的alias密码,同样,按规矩来,改为android!

以上几个操作执行后,my.keystore就是符合规矩的debug keystore了,接着在Eclipse的ADT设置中选中这个custom debug keystore即可。


五、参考资料

我的写代码也有参考这个大神的发布的demo:

http://blog.csdn.net/wwj_748/article/details/41117173

友盟官方第三方文档支持:
http://dev.umeng.com/social/android/operation
http://dev.umeng.com/social/android/login-page


友盟论坛:友盟社会化分享集成问题索引
http://bbs.umeng.com/thread-5908-1-1.html?from=qianming

umeng(友盟)实现第三方登录和分享详解之分享,持续更新大厂面试笔试题 都是实例化的new ShareAction ,这个操作在你点击分享按钮的监听事件中实现。 withText(“”)是你分享的内容 setCallback是回调的监听 讲一下区别,无分享面板的,就直接.setPlatform(SHARE_MEDIA.QQ),直接传入相对应平台就可以调用。 有分享面板的,需要在setDisplayList中具体枚举所有的(按照顺序)分享平台。 2、具体实现分享内容 1)纯文本分享 new ShareAction(ShareActivity.this) .withText(“he 阅读详情

相关推荐

使用友盟分享的步骤

1.  产品概述 关于分享和授权的sdk接口,我们在v5.0做出了巨大的改变,精简了接口调用的代码。并将分享授权,与评论等功能做出了隔离,使结构更加清晰。所以本版本的功能也只有分享与授权并无其他功能,请开发者注意。 注意:本文示例代码只有分享与授权功能,并对接口进行了调整,如需要原功能的开发者,请继续使用v4.3.0版本。 2.  获取友盟Appkey 如果你之前已经在

三石的专栏 3万+

Multiple dex files define Lcom/sina/sso/RemoteSSO错误解决办法

在安卓上遇到了Multiple dex files define Lcom/sina/sso/RemoteSSO的编译错误 在网上找解决办法 搜到了解决办法是这样的 方案1:Eclipse->Project->去掉Build Automatically->Clear ->Build Project->Build Automatically,关闭Eclipse,再...

weixin_33989780的博客 159

从三个角度理解知识图谱

2012年谷歌首次提出“知识图谱”这个词,由此知识图谱在工业界也出现得越来越多,对于知识图谱以及相关概念的理解确实也是比较绕。自己在研究大数据独角兽Palantir之后开始接触知识图谱,也算对其有了一定了解,这里从三个角度总结一下怎么去理解知识图谱。 几个基本概念:本体、实体、知识库、知识图谱 1、本体是概念的集合,是大家都公认的概念框架,一般不会改变如“人”、“事”、“物”、 “地”、“组...

JavaChaoCo的博客 6872

Android工作中遇到的问题:友盟分享到新浪微博,内容被放入草稿箱

        项目工作中使用到了友盟SDK6.42进行分享,但在测试分享到新浪微博的功能时发现,分享虽然成功了,但分享的内容却被新浪微博放进了草稿箱。        分享新浪微博代码:        ShareAction sa = new ShareAction(activity); UMWeb web = new UMWeb(shareUrl); web.setTitle(shareTitl...

lht80s的博客 1349

友盟第三方登录与分享到新浪微博

<1> 首先申请第三方账号,大部分的平台要进行登录和分享功能,都要在第三方平台上创建应用并提交审核,创建应用后,分享登录操作时显示应用的icon,名称和对应的开放平台设置有关 <2>登录新浪微博开放平台,进行创建应用,同时确保授权回调页与代码中配置一致,新浪精简版需要设置安全域名,完整版则不需要此项配置 安全域名必须是”sns.whalecloud.com” 安全域名的修改需要在二次审核通过才

ami_daqi的博客 4324

Android记录16-友盟第三方登录、分享实现

Android开发记录16-友盟第三方登录、分享实现 2014年博客之星,投票地址点击打开链接 本篇博客给大家分享一个笔者正在做的关于第三方登录、分享的实例。这里选用的是友盟社会化组件。 博客大纲例如以下:第三方登录流程友盟支持第三方登录的平台友盟社会化分享支持的平台集成友盟社会化组件流程友盟社会化SDK集成流程注意事项 第三方登录流程 下面这张图转自:http://www.cnb...

weixin_30807779的博客 67

友盟社会化分享

友盟社会化分享 标签: 友盟 2016-04-14 18:31 2186人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 写了一个简单的分享demo,创建一个button按钮,点击按钮弹出分享窗口,选择需要分享的平台进行分享 1. 获取友盟Appkey 如果你之前已经在友盟注册了应用,并获取到了App

王人冉的博客 657

Android Studio Mob第三方登录/分享(图文教程)

转载请标明出处:http://blog.csdn.net/donkor_/article/details/53422025 前言: 现在国内大部分APP应用都集成了第三方登录社会化分享,主要都是为了方便用户使用软件的同时又宣传推广应用。而市面上大多数的主流的软件都开放了第三方登录社会化分享,假如每一个平台都一个一个地去集成,可能就太消耗时间和加大了工作量,好在这种登录和分享功能已经有第...

Sahara_Savage 1万+

Android记录16 友盟第三方登录 分享实现

Android记录16 友盟第三方登录 分享实现

gfjggtf的博客 156

android第三方分享之友盟社会化组件

前言   现在几乎所有的app都带有分享功能,第一为了更好地推广自己的产品,第二作为使用者也能及时的把自己觉得好的文章,话题,app分享到社交平台供大家一起学习和使用。开发中虽然android系统自带分享功能,可以直接调用。但是系统的功能和平台往往不是很符合客户需求和人性化设计。所以很多第三方分享平台应运而生。今天重点学习一下友盟社会化组件分享功能的实现。 声明   欢迎转载,但请保...

weixin_34297300的博客 262

使用友盟社会化组件,发新浪微博的 error:redirect_uri_mismatch的解决方法

以前做微博分享,都是自己写代码,处理起来很麻烦,还经常会有很多出错处理没有考虑进去。后来发现了友盟社会化组件,真心觉得这个太不错了,(不是做广告哟),省了很多代码。想要用的,就到友盟里下载吧http://www.umeng.com/ 按文档的说明,各各步骤都做了,但在分享微博时,还是出错 error:redirect_uri_mismatch 估计是回调地址写的有问题,但正确应该怎么写...

weixin_34290352的博客 157

Android第三方登录详解1

1.打开百度搜 友盟 2.进入官网 注册 登录进入主页面 点击产品 下面的U_share 3.点击添加新应用 进入 4.提交 会生成一个K值 5.点击SDk下载 进入 点击立即使用 6.点击社会下分享 机器人 7.点击sdk下载 8.找到Android社会化组件sdk (看个人情况选择版本)点击下载 9.勾选要的第三方登录...

weixin_34249678的博客 220

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

gfjggtf的博客 167

1. 集成友盟社会化组件流程 - 第三方登录

http://dev.umeng.com/social/android/operation#2 转载于:https://www.cnblogs.com/DMDD/p/5219835.html

107

Android集成友盟社会化分享组件 ---- 分享到新浪 微信 QQ空间 腾讯微博等平台

Android集成友盟社会化分享组件 ---- 分享到新浪 微信 QQ空间 腾讯微博等平台

qq_43661309的博客 249

友盟推送里面的Alias怎么用?可以理解成账号吗?

友盟推送里面的Alias怎么用?可以理解成账号吗? 我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息。 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档写着Alias是和设备绑定的,感觉Alias算不上是严格意义的账号。不知道其它集成过友盟推送的兄弟们是否有类似的需求,是否可以通过友盟推送提供的Alias功能来满足我们的需求?   ...

weixin_34352449的博客 456

phoneGap在iOS上的简单使用:自定义实现友盟分享插件

说明:本插件仅针对个人当前项目,参照支付宝支付插件类进行开发,不保证对任何项目都具有通用性,代码仅供参考. 找到项目中的config.xml文件,在相似位置插入如下代码: 具体插件类代码如下: // // UM_SharePlugin.h // WDZJ // // Created by Scarecrow on 15/4/23. //

谁令骑马客京华 1382

Android中使App快速 简单地支持新浪微博 微信 QQ facebook等十几个主流社交平台的分享功能

Android中使App快速 简单地支持新浪微博 微信 QQ facebook等十几个主流社交平台的分享功能

qq_43661309的博客 341
上一篇: eclipse出现 Some characters cannot be mapped using "GBK" character encoding 错误代码的解决办法
下一篇: 修改Android签名证书keystore的密码、别名alias以及别名密码
Woo0ooW
博客等级 码龄13年 22粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值