新浪微博开放平台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
 
  相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
 
公司简介|招贤纳士|广告服务|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈
网站客服杂志客服微博客服webmaster@csdn.net400-660-0108|北京创新乐知信息技术有限公司 版权所有|江苏知之为计算机有限公司|江苏乐知网络技术有限公司
京 ICP 证 09002463 号|Copyright © 1999-2017, CSDN.NET, All Rights Reserved 
 

android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法的更多相关文章

  1. iOS:友盟SDK第三方登录 分享及友盟统计的使用

    本文转载至 http://www.it165.net/pro/html/201503/37101.html Tag标签:第三方   01.#import "UMSocial.h" ...

  2. Xamarin.Android 绑定友盟社会化分享组件

    Xamarin.Android 绑定友盟社会化分享组件 最近在开发博客园Android App的时候需要用到友盟社会化分享组件,在github上搜了一下都没有找到最新版本绑定好的项目,就自己动手来绑定 ...

  3. 【转】Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法

    Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法 [原文链接] 这篇文章完美的解决了我几个月没结论的bug... 感谢热爱分享的技术达人~ 我是怎么走进这个大坑的 ...

  4. Android中用友盟实现QQ的第三方登录

    //首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了. //下面是友盟的APi文档 1.  产品 ...

  5. android使用友盟第三方自动更新/手动更新

    最近项目用到自动更新,发现一个方便快捷的第三方组件非常好用,只需要几行代码搞定,非常适合新手使用.分享给大家一起学习. 本文档帮助您以最快速最简洁的方式集成使用自动更新组件. 一.申请友盟开发者账号创 ...

  6. Android集成友盟社会化分享功能

    1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪 ...

  7. android 集成友盟分享之后,想自定义分享面板的看过来

    第一种情况 首先上传一张默认的友盟分享的效果图 看起来还不错,但是总是有这样那样的原因,需要我们对默认效果做出一些改变. 第二种情况 如果你想做出下面的效果: 或者这样的效果 : 总之上面的效果总是在 ...

  8. Android集成友盟facebook分享

    在项目中需要将图片和视频分享到社交平台,所以集成了友盟分享.在集成facebook分享的时候走了不少弯路,现在将过程记录下来. 1.先将友盟facebook的jar包复制到项目的libs文件夹下. 2 ...

  9. 【Android】友盟的自动更新组件

    前言 又好又专业的服务能帮开发者省很多时间.一开始做项目也准备自己来统计数据.自己做自动更新,随着使用友盟服务的时间增加,渐渐放弃了这种想法,转而研究如何更充分的使用,这里分享一下使用自动更新组件的心 ...

随机推荐

  1. Codeforces Round #575 (Div. 3) 题解

    比赛链接:https://codeforc.es/contest/1196 A. Three Piles of Candies 题意:两个人分三堆糖果,两个人先各拿一堆,然后剩下一堆随意分配,使两个人 ...

  2. JIT对锁的优化- 锁消除和锁粗化案例分析

    锁消除和锁粗化案例分析 锁消除 直接上代码 /** * 描述: 锁粒度演示 * @author karl * @create 2020-02-11 14:38 */ public class MySy ...

  3. linu后台执行py文件和关闭的后台py文件

    后台执行py nohup python xxx.py 关闭后台执行py 查看进程pid ps -aux|grep main.py 根据pid关闭关闭进程 kill -9 (pid)

  4. javascript的正则匹配

    前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享. 原文地址[http://blog.sina.com.cn/s/ ...

  5. 【代码学习】PYTHON中的静态方法和类方法

    一.类方法 是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大 ...

  6. io异常

    针对异常,JVM默认的处理方案: 一旦遇到程序出现了问题,就会把问题的类名,错误原因,错误的位置等信息打印在控制台,以便我们观察. 并且,会自动从当前出问题的地方停止掉.这种处理方案虽然可以,但是不够 ...

  7. codeforces- Shortest path of the king

    The king is left alone on the chessboard. In spite of this loneliness, he doesn't lose heart, becaus ...

  8. input和button 高度不一致问题

    原因是 input和button的高度计算不一样, input高度不包括border. button高度包括border. 解决方法: 1.box-sizing:border-box: 2.borde ...

  9. pandas help

    1. read_csv read_csv方法定义: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infe ...

  10. 08 DTFT变换的性质

    DTFT变换的性质 线性性质 设 \[ x[n]\xrightarrow{DTFT}X(e^{jw})\quad y[n]\xrightarrow{DTFT}Y(e^{jw})​ \] 则 \[ \ ...