Android App实现微信第三方授权登陆
- 下载官方SDK
在微信开放平台,下载微信的官方SDK,以及签名生成工具。
地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
2.导入官方SDK
把Android开发工具包里面的libammsdk导入到你的项目中如下图:
这里要注意的是,应用签名不是在Eclispe 中查看,而是要用到我们第1步下载的签名生成工具。首先把签名生成工具安装在你的手机上,然后把你需要添加微信第三方登录功能的应用安装到你的手机上,最后按照签名工具的提示,在手机上生成应用的签名。
如果这一步填的应用包名有错的话,将会导致你的应用无法调起微信。
3.新建wxapi目录
在你的项目的包名目录下新建一个wxapi目录,应用的包名可以在你的manifest文件里查看。注意,wxapi目录必须新建在你的包名目录下,否则微信返回的请求以及响应将会无法回调。
4.新建WXEntryActivity类
在上一步新建的目录下新建一个WXEntryActivity.java类,继承Activity,实现IWXAPIEventHandler接口,如下图:
然后打开manifest,为这个类添加exported属性,设置为true:
5.注册到微信
在代码中,把你的应用注册到微信。这一步可以在你的APP的第一个Activity中进行,我就是在第一个Activity中的onCreate()方法中注册的。
/* * 注册到微信 */ private void regToWX(){ api = WXAPIFactory.createWXAPI(this, APP_ID, true);//此处的APP_ID替换为你在微信开放平台上申请到的APP_ID api.registerApp(APP_ID); }
6.调起微信
注册完后,就可以调起微信了,通过以下几行简单的代码就可以调起微信了:
/* * 向微信发送授权登陆的请求 */ private void sendAuth(){ final SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "none"; api.sendReq(req); }
这一步分的代码也是比较简单的,你可以选择在你的登录界面上,注册一个Button,点击Button,就执行上面的代码,发送授权登录请求,拉起微信了。
7.获取token
最后,在WXEntryActivity中,重写onResp方法,获取token。注意,新版的微信SDK中,已经code这个属性改名为token了。但是官方文档还没有改过来,我折腾了一个晚上才发现的。token就是官方教程上的code,只是名字不同了而已。获得token后,就可以利用token来获得access_token,进行后面的操作。
@Override public void onResp(BaseResp resp) { switch(resp.errCode){ case BaseResp.ErrCode.ERR_OK: SendAuth.Resp newResp = (SendAuth.Resp) resp; String token=newResp.token; break; default: break; }
再强调一遍token就是官方文档中的code,文档中的String code=newResp.code;已经不能再用了,因为code已经改名为token,所以应该要用String token=newResp.token。
进行到这一步,微信第三方授权基本上已经完成了,接下来只要利用token来获取access_token,按照官方文档获取想要的信息就可以了。如果还有不清楚地地方,欢迎留言,共同学习,如果有错误的地方,也欢迎大家提出来。