码迷,mamicode.com
首页 > 微信 > 详细

android第三方(qq、微信、微博)登录

时间:2015-03-27 22:25:49      阅读:578      评论:0      收藏:0      [点我收藏+]

标签:android第三方qq微信微博登录

<span style="font-size:12px;">
</span>

        最近项目需要做第三方登录,由于以前没做过,所以也是花了一周时间,走了好多弯路,总算是完成了。依据有福同享有难同当这句话,还有互相学习的原则,还有还有,现在把一些知识点总结一下,供需要者参考,美吧,有不足之处还望指点。有两种方式可实现:一种是用友盟的(它是吧qq、微信、微博登陆集成一下),另一种是直接用官方sdk。首先要说明的是qq登陆、微信登录、微博登录,都分别要在腾讯公众平台、微信公众平台、微浪微博公众平台申请账号,提交app信息审核通过才能调用。还有就是微信公众平台需要交纳每年300的费用才能使用它的登录分享功能,以及一些其它功能。我已开始想用友盟的,首先参考了这篇文章,还带着demo(veryimportant,例子能说明一切,你懂得),很不错,别的是在也找不到了,地址:http://blog.csdn.net/wwj_748/article/details/41117173   。你首先需要申请友盟的账号,然后下载需要的SDK,参考文档,把应用的信息注册一下,如图技术分享

我在使用老是出现一些莫名其妙的问题,如qq登陆,明明用别人的demo还有自己写个demo,都能正常运行和获取到用户信息,但是集成到自己的项目就不行,获取不到信息,试了好久都不行,还有就是新浪微博登录时无法调用客户端如果把客户端卸掉网页版登陆是正常的,但是友盟没有提供选择客户端或是网页版登录的选择,所以新浪微博也是没办法正常登录,只有微信能正常运行,但也没那么简单,有一个大坑,例如我的apk,包名(也就是AndroidManifest.xml中的包名)是com.kingdowin.gosu,你项目中必须有一个包名是com.kingdowin.gosu.wxapi,下面有一个类是WXEntryActivity.java,否则就获取不到用户信息,记好是必须


     也许是自己太笨,终上所述,我只有选择官方SDK。这三种登录方式都需要签名打包后才能正常运行,OK?!一、QQ开放平台,地址:http://open.qq.com/,下载一个demo,把自己APPID替换一下就行,然后把代码和jar包集成到你的项目中。qq登录还是比较简单的。有时会出现非官方授权请到应用宝下载,是因为运行时需要签名包,然后就正常了,但是腾讯贴心的提供一个测试账号即使不签名打包也行,就是登录你注册基本信息时的

Q号,如图

技术分享



二、微信开放平台,地址:https://open.weixin.qq.com/,下载一个demo运行一下,把自己的APPKEY替换一下,但是官方demo,没有授权的界面,这是要闹哪样?需要自己加几行代码  

<span style="font-size:12px;">SendAuth.Req req = new SendAuth.Req();  
req.scope = "snsapi_userinfo";  
req.state = "wechat_sdk_demo_test";  
api.sendReq(req);</span>
主要代码

<span style="font-size:12px;"><pre name="code" class="java">public class WXEntryActivity extends Activity implements IWXAPIEventHandler{

	private IWXAPI api;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.flash_activity);
		<span style="color:#3366ff;">api = WXAPIFactory.createWXAPI(this, Property.wxLoginInfo.getAppid(), false);
		api.handleIntent(getIntent(), this);</span>
	}
	
	@Override
	public void onReq(BaseReq arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onResp(BaseResp resp) {
		Bundle bundle = new Bundle();
		switch (resp.errCode) {
		case BaseResp.ErrCode.ERR_OK:
//		可用以下两种方法获得code
//		resp.toBundle(bundle);
//		Resp sp = new Resp(bundle);
//		String code = sp.code;<span style="white-space:pre">
//		或者
		String code = ((SendAuth.Resp) resp).code;
//              上面的code就是接入指南里要拿到的code,可通过下面地址获取需要的openId和accessToken
//  		<span style="color: rgb(54, 46, 43); line-height: 20px; background-color: rgb(255, 249, 239);">"https://api.weixin.qq.com/sns/oauth2/access_token?" +</span><br style="color: rgb(54, 46, 43); line-height: 20px; background-color: rgb(255, 249, 239);" /><span style="color: rgb(54, 46, 43); line-height: 20px; background-color: rgb(255, 249, 239);">//               "appid="+Constant.WEIXIN_APP_ID(即自己的APPID)+"&secret="+Constant.WEIXIN_APP_SECRET(即自己的APPSECRET)+"&code="+code(即获取到的code)+"&//                grant_type=authorization_code"; 止此完事!!!!!哈哈</span>	
			break;

		default:
			break;
		}
		
	}
}</span>

注意:上面是获取code。现在最新的官方jar包好像不支持获得code了。直接就能得到token,省略了获取code 这一步。所以方法不变,大家取的时候直接resp.token就行了。不用再去取code了。但是,但是,这样直接拿到token了好像按照官方文档上的方法就不能获得openid了。自己找不到办法也找不到相关资料,反正是jar包更新了但是文档还没更新,大家弄不成功的话可以先用旧的jar和上面获取code的方法。点击下载旧版jar包
 最需要需要注意例如我的apk,包名(也就是AndroidManifest.xml中的包名)是com.kingdowin.gosu,你项目中必须有一个包名是com.kingdowin.gosu.wxapi,下面有一个类是WXEntryActivity.java,否则就获取不到用户信息,记好是必须。如图

技术分享

我就是没有在意才导致浪费了很长时间也没调试成功,和友盟的是一样的,是不是很变态啊,把我本来的包名和类名全都改了,没办法呀!

三、微博开放平台,地址:http://open.weibo.com/。下载个demo替换成自己的APPKEY,然后替换一下自己的也是一肚子苦水要倒啊。妈的,开始下载一个官方demo一切都配置好了,还是报 sso package or sign error,抱头苦死不得其解,后来经过网上查阅资料和分析,可能是下载了一个老版本。后来经过自己一番研究和实验,发现了这个地址上的demo还是靠谱的,https://github.com/sinaweibosdk/weibo_android_sdk。立马生效,但是遗憾的是无论如何也不能调用微博客户端登录,到授权页面后直接闪退,获取不到用户信息,无奈呀,最后只是调用网页版登录可行,有经验的朋友可以告知一下啊,还有个经常报的错就是 redirect_uri_dismatch,那是因为你代码中的回调地址和你在开放平台中注册的地址不一样,一般都写成REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";就行

         


android第三方(qq、微信、微博)登录

标签:android第三方qq微信微博登录

原文地址:http://blog.csdn.net/gaolei1201/article/details/44680291

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!