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

微信登陆,微信SDK授权登陆经验分享的更多相关文章

  1. 微信公众平台网页授权登陆access_token误区

    公众平台里显示 每日获取access_token上线2000次,此access_token并非网页授权登陆的access_token大家不要混淆 1,网页授权登陆的access_token是没有上线的 ...

  2. 微信小程序+php 授权登陆,完整代码

    先上图        实现流程: 1.授权登陆按钮和正文信息放到了同一个页面,未授权的时候显示登陆按钮,已授权的时候隐藏登陆按钮,显示正文信息,当然也可以授权和正文分开成两个页面,在授权页面的onlo ...

  3. 【微信小程序】---授权登陆---【巷子】

    Page({ onLoad: function() { var that = this; // 查看是否授权 wx.getSetting({ success: function(res) { if ( ...

  4. 转载:微信开放平台开发第三方授权登陆(二):PC网页端

    微信开放平台开发第三方授权登陆(二):PC网页端 2018年07月24日 15:13:32 晋文子上 阅读数 12644更多 分类专栏: 微信开发 第三方授权登录   版权声明:本文为博主原创文章,遵 ...

  5. 微信授权登陆接入第三方App(步骤总结)Android。

    这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...

  6. 微信授权登陆接入第三方App(步骤总结)Android

    微信授权登陆接入第三方App(步骤总结)Android Android App实现第三方微信登录

  7. 一个基于thinkphp的微信授权登陆功能

    共享一份基于thinkphp开发的用户授权登陆的功能代码,本实例使用thinkphp的第三方微信公众平台PHP-SDK,地址https://github.com/dodgepudding/wechat ...

  8. 微信小程序开发 - 用户授权登陆

    准备:微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序开发文档:htt ...

  9. ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息

    ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息是需要客户授权,下面讲解详细步骤: 第一步:客户点击登录页,自动跳转到微信服务器端获取code 第二步:用第一步获取的code去获取客户的ac ...

随机推荐

  1. sql2008拒绝了对对象 (数据库 ,架构'dbo')的SELECT权限

    连接sql2008的时候,出现了这种一直报权限错误:错误截图如下: 所见效果描述:在windows身份验证的 情况下登陆进去数据库的表都是可以打开的,当换到sa或者别的账号登陆进去的时候这个时候我们点 ...

  2. Python sql注入 过滤字符串的非法字符

    #coding:utf8 #在开发过程中,要对前端传过来的数据进行验证,防止sql注入攻击,其中的一个方案就是过滤用户传过来的非法的字符 def sql_filter(sql, max_length= ...

  3. 重装windows导致grub损坏

    本人一块磁盘第7分区装linux,第一分区先装xp,后重装为windows8.1后,发现grub引导没了,直接进了windows,解决办法如下: 1.LiveCD进入系统,打开shell 2.输入sh ...

  4. 02、获取 WebView 控件中,加载的 HTML 网页内容

    在开发 app 的时候,WebView 是经常使用的控件.而且有时需要向 WebView 中的 html 内容 注入额外的 js 进行操作.这里记录一下在当前 WebView 控件中,获取 html ...

  5. 用C语言(apue)实现 把时间戳转换为国标格式的字符串(2017-07-17 22:36:12)的函数

    /*******************************************************************************/ /** *** 函 数 名: cha ...

  6. V模型与测试级别

    V模型与测试级别[1] 2015-06-24 目录 2.1.1 V模型2.2.1 单元测试2.2.2 集成测试2.2.3 系统测试2.2.4 验收测试 2.1.1 V模型 返回 单元测试:验证软件单元 ...

  7. 错误:undefined reference to `__gxx_personality_v0'

    使用gcc编译C代码,引用了C++ 库,出现这个错误,网上搜到这哥们的文章,解决问题 转自:错误:undefined reference to `__gxx_personality_v0' 1. Li ...

  8. python模块之codecs: 自然语言编码转换

    python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理.    有一点需要清楚的是,当python要做编码转换的时候,会借助于内部 ...

  9. jquery ajax api

    执行一个异步的HTTP(Ajax)的请求. version added: 1.5jQuery.ajax( url, [ settings ] ) url一个用来包含发送请求的URL字符串. setti ...

  10. 存档格式选择--JSON

    游戏里存档可以直接用lua,但是lua需要有一定编程基础:另外可以用ini,不过ini又太简单了,复杂的 格式无法用ini描述:还可以用xml,它的表达能力非常丰富,甚至有限数据库都用xml来作存储结 ...