微信登录,微信SDK受权登录经验分享

From:http://www.eoeandroid.com/thread-547012-1-1.htmlhtml

最近由于项目须要作了微信登录,好像也是微信最近才放出来的接口。还须要申请才能有权限实现受权。
其实也比较简单,跟新浪微博和qq受权登录差很少。不过仍是有点差异,不知道是微信sdk自己就没有完善仍是其余问题。
会有一点蛋疼的地方,下面会细说。
(因为等级不够,不能发在经验分享区,只能先写在这里了。但愿对要作微信登录的朋友有帮助,若是有不对的地方还但愿你们直言不讳)
<ignore_js_op> 
首先就是sdk了,不过要注意的是sdk要是最新的,老版本的sdk可能会没有一些相关类(在官网上申请项目获得AppID和AppSecret就很少说了)附件已经上传,吧zip改为jar


而后咱们来看看官网上是怎么说的。
<ignore_js_op> 
1. 第三方发起微信受权登陆请求,微信用户容许受权第三方应用后,微信会拉起应用或重定向到第三方网站,而且带上受权临时票据code参数;
2. 经过code参数加上AppID和AppSecret等,经过API换取access_token;
3. 经过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操做。



跟其余受权不同的是他这里多了一步获得临时code的过程。应该也是为了安全考虑吧。


先作准备工做,不论是登录受权仍是分享到微信或者朋友圈,咱们都须要在项目里建一个 WXEntryActivity类,这个文档里面有说。demo里面也有这个类,在里面咱们去实现IWXAPIEventHandler接口,而后会有几个方法,
// 微信发送请求到第三方应用时,会回调到该方法
onReq(BaseReq req) 
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
onResp(BaseResp resp) 

还有
onNewIntent(Intent intent) 




下面咱们来看看具体代码。官网是这么说的
<ignore_js_op> 
咱们看Android这部分,我这里是写啊MyApplication里面的,这个你们能够用本身的方法去写。首先咱们要先定义要用的IWXAPI ,注册好
public static IWXAPI WXapi;
WXapi = WXAPIFactory.createWXAPI(this, weixin_App_ID, true); (weixin_App_ID就是申请项目获得的AppID
WXapi.registerApp(weixin_App_ID);


好,咱们在来看受权代码。
SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo";
MyApplication.WXapi.sendReq(req);


而后界面会跳到相似下面的界面
<ignore_js_op> 
赞成受权会,会返回到 WXEntryActivity这个类,调用onResp(BaseResp resp) 方法,咱们断点看看BaseResp返回的是什么数据
<ignore_js_op> 
官方说明以下
<ignore_js_op> 
蛋疼的地方来了。。。
这里咱们看到咱们已经拿到code了,
正常状况下咱们都会去resp.code获得String类型的code,不过这里就是点不出来。点不出来,获得不code,咱们没法进行下一步。

后来我查了下他的父类才发现。咱们能够吧resp强行转成SendAuth.Resp类型。(在这里,我也迷茫了好久)
SendAuth.Resp sendResp = (SendAuth.Resp) resp;
这样咱们能够就能够经过sendResp来点出code。
sendResp.code    OK,获得code接下来就简单多了。哈哈。。。

获得code后,咱们再来看看官网怎么说的,
<ignore_js_op> 
下面就简单了。咱们只须要把获得code和申请号的id和secret拼接在一块儿去请求下面接口就好了,


https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

返回结果以下。
<ignore_js_op> 
ok,拿到这些数据,咱们就能够去申请注册帐号了。

微信开放平台连接
https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&verify=1&lang=zh_CN&token=865d9ba02afbe23ac1e08cb5c324d011126683eaandroid

相关文章
相关标签/搜索