本文实例讲述了android实现使用微信登录第三方app的方法。分享给大家供大家参考,具体如下:
使用微信登录app,免去注册过程,现在已经有很多的类似应用了。集成该功能过程不复杂,但还是有一些地方需要注意的。
开始之前,需要做下面的准备工作。
1、到微信开放平台注册你的app,并申请开通微信登录的权限。参考这里:
https://open.weixin.qq.com//
2、下载android sdk和签名查看工具,请参考:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_cn/
3、获取到app的签名,并填写到微信开放平台。
下面开始进入主题:
引入微信登录相关sdk到项目的lib文件夹中,就一个文件:
libammsdk.jar
调用微信,申请用户授权:
//api注册 api = wxapifactory.createwxapi(this, "app_id", true); api.registerapp("app_id"); sendauth.req req = new sendauth.req(); //授权读取用户信息 req.scope = "snsapi_userinfo"; //自定义信息 req.state = "wechat_sdk_demo_test"; //向微信发送请求 api.sendreq(req);
将app_id替换成你在微信开放平台申请到的,上面的代码就可以调起微信了。
授权成功后,微信会返回一个code,下面介绍如何接收微信回传的信息。
在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个wxentryactivity.java文件,输入类似下面的代码:
package 你的包名.wxapi;
public class wxentryactivity extends activity implements iwxapieventhandler{ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //注册api api = wxapifactory.createwxapi(this, "app_id"); api.handleintent(getintent(), this); } @override public void onresp(baseresp resp) { if(resp instanceof sendauth.resp){ sendauth.resp newresp = (sendauth.resp) resp; //获取微信传回的code string code = newresp.code; } } }
在androidmanifest.xml中加入下面的代码:
修复wxentryactivity中的错误,在onresp方法中获取到code,然后通过下面的接口获取到token和openid:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=code&grant_type=authorization_code
得到下面的数据:
{ "access_token":"access_token", "expires_in":7200, "refresh_token":"refresh_token", "openid":"openid", "scope":"scope", "unionid":"o6_bmasdasdsad6_2sgvt7hmzopfl" }
openid可以作为用户的唯一标识,将openid保存下来,就可以实现登录状态的检查了。
如果需要获取用户的信息,例如昵称,头像,可以使用下面的接口:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token&openid=openid
得到的数据为:
{ "openid":"openid", "nickname":"nickname", "sex":1, "province":"province", "city":"city", "country":"country", "headimgurl": "http://wx.qlogo.cn/mmopen/g3monuztnhkdmzicilibx6iafqac56vxlsufpb6n5wksyvy0chqkkiajsgq1dzutogvllrhjberqq4emsv84eavhiaiceqxibjxcfhe/0", "privilege":[ "privilege1", "privilege2" ], "unionid": " o6_bmasdasdsad6_2sgvt7hmzopfl" }
更多的接口使用,请参考:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317853&lang=zh_cn
可能的问题:
1、无法调起微信。
可能的原因是签名错误,请检查签名。
2、无法接受到微信回传的信息
可能的原因是没有把wxentryactivity加入到androidmanifest.xml中。
ps:关于androidmanifest.xml文件相关属性功能可参考本站在线工具:
android manifest功能与权限描述大全:
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
如对本文有疑问, 点击进行留言回复!!
IjkPlayer【1】 Demo Android的最简单实现
一起Talk Android吧(第二百六十回:Android中的BottomNavigationView概述)
网友评论