zoukankan      html  css  js  c++  java
  • 微信登陆,微信SDK授权登陆经验分享

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

    最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口。还需要申请才能有权限实现授权。
    其实也比较简单,跟新浪微博和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=865d9ba02afbe23ac1e08cb5c324d011126683ea

  • 相关阅读:
    Confluence 6 从一个备份中获得文件附件
    Confluence 6 从其他备份中恢复数据
    Confluence 6 从生产环境中恢复一个测试实例
    从 Confluence 5.3 及其早期版本中恢复空间
    Confluence 6 恢复一个空间的问题解决
    Confluence 6 从一个 XML 备份中导入一个空间
    Confluence 6 恢复一个空间
    Confluence 6 恢复一个站点有关使用站点导出为备份的说明
    网易蜂巢(云计算基础服务)MongoDB服务重磅来袭
    pdfjs viewer 开发小结
  • 原文地址:https://www.cnblogs.com/niray/p/4251299.html
Copyright © 2011-2022 走看看