新浪微博开放平台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();
setDisplayList中传递的参数顺序即为最后面板中平台显示的平台顺序
其中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
- 评论排行
- 推荐文章
android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法的更多相关文章
-
iOS:友盟SDK第三方登录 分享及友盟统计的使用
本文转载至 http://www.it165.net/pro/html/201503/37101.html Tag标签:第三方 01.#import "UMSocial.h" ...
-
Xamarin.Android 绑定友盟社会化分享组件
Xamarin.Android 绑定友盟社会化分享组件 最近在开发博客园Android App的时候需要用到友盟社会化分享组件,在github上搜了一下都没有找到最新版本绑定好的项目,就自己动手来绑定 ...
-
【转】Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法 [原文链接] 这篇文章完美的解决了我几个月没结论的bug... 感谢热爱分享的技术达人~ 我是怎么走进这个大坑的 ...
-
Android中用友盟实现QQ的第三方登录
//首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了. //下面是友盟的APi文档 1. 产品 ...
-
android使用友盟第三方自动更新/手动更新
最近项目用到自动更新,发现一个方便快捷的第三方组件非常好用,只需要几行代码搞定,非常适合新手使用.分享给大家一起学习. 本文档帮助您以最快速最简洁的方式集成使用自动更新组件. 一.申请友盟开发者账号创 ...
-
Android集成友盟社会化分享功能
1. 产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪 ...
-
android 集成友盟分享之后,想自定义分享面板的看过来
第一种情况 首先上传一张默认的友盟分享的效果图 看起来还不错,但是总是有这样那样的原因,需要我们对默认效果做出一些改变. 第二种情况 如果你想做出下面的效果: 或者这样的效果 : 总之上面的效果总是在 ...
-
Android集成友盟facebook分享
在项目中需要将图片和视频分享到社交平台,所以集成了友盟分享.在集成facebook分享的时候走了不少弯路,现在将过程记录下来. 1.先将友盟facebook的jar包复制到项目的libs文件夹下. 2 ...
-
【Android】友盟的自动更新组件
前言 又好又专业的服务能帮开发者省很多时间.一开始做项目也准备自己来统计数据.自己做自动更新,随着使用友盟服务的时间增加,渐渐放弃了这种想法,转而研究如何更充分的使用,这里分享一下使用自动更新组件的心 ...
随机推荐
-
glusterfs 内存管理方式
glusterfs中的内存管理方式: 首先来看看glusterfs的内存管理结构吧: struct mem_pool { struct list_head list; int hot_count; i ...
-
Linux 数组
200 ? "200px" : this.width)!important;} --> :介绍 在shell4.0之后支持普通数组和关联数组,普通数组只能使用整数作为索引,关 ...
-
html5 video标签兼容性与自定义控件
Video不兼容IE8及之前的版本和opera mini. 格式上MPEG4/H.264兼容大部分浏览器,除低版本Firefox和低版本opera,这些可以通过用ogg格式解决,而webm是一种开放. ...
-
C#(asp.net)备份还原mssql数据库代码【转】
采集自互联网,未验证..... 如果我们使用虚拟主机为网站空间,这时如果需要备份和还原msssql数据库是非常麻烦,如果在网站后台管理当中加入对msssql数据库的操纵,可以使我们对数据库的备份和还原 ...
-
关于FIND_IN_SET 和distinct 的坑爹的一天
FIND_IN_SET的使用,前面介绍过,distinct是结果去重复的函数,两者结合使用,却花费了我一天的光阴. 1.先面试含有重复值正确的显示顺序select lIdfrom tbCourse1 ...
-
android 源代码快速搜索引擎OpenCrok
使用OpenGrok的Android系统源码搜索引擎,搜索速度简直太快速了!: http://androidxref.com/ 另外,OpenGrok的也是可以在本地计算机中安装配置的,主要是安装To ...
-
LeetCode 243. Shortest Word Distance (最短单词距离)$
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
-
shell实现自动部署两台tomcat项目Ⅱ
本次分为3个脚本, scp.sh放进第一台机器(负责传输文件), schenglee.sh放进第一台机器(自动部署), schenglee2.sh放进第二台机器(自动部署) 环境 tomcat1: 1 ...
-
网络共享存储服务NFS
网络共享存储服务NFS 作者:Eric 微信:loveoracle11g 环境准备 服务器系统 角色 IP RHEL 7.5 x86-64 NFS服务端 192.168.10.201 RHEL 7.5 ...
-
IPC,Hz(Hertz) and Clock Speed
How do we measure a CPU's work? Whether it's fast or not depends on three factors: IPC, Hz, Clock sp ...