微信第三方登陆

摘自:http://blog.csdn.net/jolin678/article/details/50524081

 

 

这几天开发要用到微信授权的功能,所以就研究了一下。可是微信开放平台接入指南里有几个地方写的不清不楚。在此总结一下,以便需要的人。

很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了。

  1.       目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。也就是如果第三方应用需要微信授权登陆的话就必须在本机上安装了微信。而后续授权登陆或调用接口之类的相当于app和微信两个应用之间通话。

 

1、首先需要注册微信开放平台,然后获取开发者认证。审批通过之后再创建一个移动应用同样还是需要审批。通过之后就可以给这个应用添加微信授权登陆以及相应功能了。这里移动应用审批通过之后会给你两个参数,一个叫AppId,一个叫Secret。这两个参数在后面用的到。

补充:写这篇文章有一段时间了。在这补充下大家容易出问题的几个地方。

1)大家在创建移动应用的时候注意的地方。

上面图片是申请移动应用时候的第二步,令我想不明白的是很多开发者还不知道应用包名和应用签名指的是什么。。。。。。。。

包名是你manifest文件里面顶层的那个package啊。

就是这个东西啊,这个东西啊少年。

2)应用签名。好吧我真不想啰嗦了。应用签名就是你同过ks文件得到的那个应用签名。如果你不知道如何获得这个签名。请按下面步骤走:

1,先把你的应用程序打包安装在你的手机上。

2,下载官网上提供的签名生成工具并安装在手机上。下面这个地方下载:

3、打开签名生成工具输入你的app的包名就生成你的应用签名了。

补充完毕。。。(对于上面这点补充我真不想多回答了。PS:我的昵称留下了QQ我很无辜啊。。。大家有问题上班时间别问好吗,哥心软不忍心拒绝啊,尤其有妹子问的时候啊。。。坟蛋)

2、在需要微信授权的项目中导入微信的第三方JAR包,这个在微信开放平台接入指南里面说的很清楚,不再啰嗦。

3、注册到微信:

这一步也没什么课解释的,相当于两人要联系的时候先打通了电话,然后开始沟通。这一步在需要和微信通话的界面之前注册了就行。我的是在欢迎界面注册的。

4、开始和微信通话

首先和微信通话之前,要在项目代码中新建一个Activity,并提供相应的回调方法供微信调用。但是这一点在接入指南上写的就不清不楚导致我浪费了好几个小时。一下内容是我在接入指南里复制来的。

a. 在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity(例如应用程序的包名为net.sourceforge.simcpux,则新添加的类如下图所示)

并在manifest文件里面加上exported属性,设置为true。

一定要注意上面这句话:在你的包名相应目录下新建一个wxapi目录。说的是在包名相应目录下建一个wxapi目录。也就是是包名目录的子目录,千万不要直接在src下面建个包就完了。(粗心这毛病害死人啊。)

然后再这个包下面建一个类:

 

copy

 

<pre name= =>  WXEntryActivity  Activity  IWXAPIEventHandler{  

  •   
  •  IWXAPI api;  
  •       
  •   onCreate(Bundle savedInstanceState) {  
  •           
  • .onCreate(savedInstanceState);  
  •         setContentView(R.layout.flash_activity);  
  • , Property.wxLoginInfo.getAppid(), );  
  •         api.handleIntent(getIntent(), );</span>  
  •   
  •       onReq(BaseReq arg0) {  
  •   
  •           
  •   
  •       onResp(BaseResp resp) {  
  •  Bundle();  
  •          (resp.errCode) {  
  •  BaseResp.ErrCode.ERR_OK:  
  •   
  • //      resp.toBundle(bundle); //      Resp sp = new Resp(bundle); //      String code = sp.code;<span style="white-space:pre"> //      或者   
  • ;  
  • :  
  • ;  
  •         }  
  • }  

注意:上面是获取code。现在最新的官方jar包好像不支持获得code了。直接就能得到token,省略了获取code 这一步。所以方法不变,大家取的时候直接resp.token就行了。不用再去取code了。但是,但是,这样直接拿到token了好像按照官方文档上的方法就不能获得openid了。我也没尝试有什么新的方法,反正是jar包更新了但是文档还没更新,大家弄不成功的话可以先用旧的jar和上面获取code的方法。点击下载旧版jar包
这是那个WXEntityAcitivity的部分代码。结合接入指南,大家应该都看的懂。

然后开始和微信通话,

 

copy

 

</pre><pre name= =>{   

  •   
  •  SendAuth.Req();  
  • req.scope = ;  
  • ;  
  • api.sendReq(req);  
  • }  

这一步就是和微信要code。执行了这一段代码之后。微信会调用刚才WXEntityActivity类里面的onResp()方法。并且把code返回来了。见上面那一段代码。获取到code之后就可以通过code获取access_token了。
请求以下链接获取access_token:

 

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

这步和微信通信获得access_token就是普通的访问链接。 用httpClient就行了,而不是接入指南里说的那个和微信通信的方法onReq().然后还是这样的方式通过access_token.就可以调用接口获得用户基本信息了。具体返回参数什么的接入指南里面说的很清楚。至此微信授权基本是成功了。

不过在开发的过程中要注意一下debug keystore。就是Window->Preferences->Android->Build里面。

这里,我们要添加Custom debug keystore。上面的那个debug keystore不会和微信通信。

而我们添加的这个keystore 也要符合一些规范所以要改一改。

那就是keystore的密码改为:android

其中,my.keystore是要修改的证书文件,执行后会提示输入证书的当前密码,和新密码以及重复新密码确认。这一步需要将密码改为android

alias的名称要改为:androiddebugkey

android
这一步中,my_name是证书中当前的alias,-destalias指定的是要修改为的alias,这里按规矩来,改为androiddebugkey!这个命令会先后提示输入keystore的密码和当前alias的密码。

keystore的alias密码也改为:android

keytool -keypasswd -keystore my.keystore -alias androiddebugkey

这一步执行后会提示输入keystore密码,alias密码,然后提示输入新的alias密码,同样,按规矩来,改为android!

这样修改完keystore之后把这个keystore放到上面ADT的custom debug keystore里面。就可以直接调试微信相关的功能了。

大概就这几点吧。 

 

转自:http://blog.csdn.net/qq247890212/article/details/40822481 博主QQ:247890212

 

http://www.cnblogs.com/lgqboke/p/6137107.html

 

时间: 2024-10-30 06:31:08

微信第三方登陆的相关文章

ios-iOS微信第三方登陆到应用时,其accesstoken会与应用服务器的accesstoken产生冲突

问题描述 iOS微信第三方登陆到应用时,其accesstoken会与应用服务器的accesstoken产生冲突 iOS使用微信第三方登陆自己的应用的时候,后台说因为移动端的access_token一刷新,导致自己应用的服务器的access_token过期,然后后台对应的账户的数据就不能够正常读取,现在应该怎么办? 解决方案 现在发现iOS使用的id与密钥都和公众号的一样,等年后使用新的id与密钥再来看看 这个问题先到这里

服务器-ios微信第三方登陆出现问题

问题描述 ios微信第三方登陆出现问题 iOS使用微信第三方登陆自己的应用的时候,后台说因为移动端的access_token一刷新,导致自己应用的服务器的access_token过期,然后后台对应的账户的数据就不能够正常读取,现在应该怎么办? 解决方案 http://www.cocoachina.com/ios/20140922/9715.html

net-微信第三方登陆 .NET

问题描述 微信第三方登陆 .NET 求一个微信第三方登陆的demo,我用.NET开发的网站,客户需要一个微信第三方登陆,QQ和微博什么的都会做,网上也有现成的demo,但是微信没找到,而且微信官网(open.weixin.qq.com)没有.NET的示例.现在只能做到生成二维码,扫描确认后,登陆到指定的页面,但是获取不了用户的信息,求大神帮忙 解决方案 http://www.cnblogs.com/fengwenit/p/4653940.html http://my.oschina.net/lc

微信的第三方登陆回调问题

问题描述 微信的第三方登陆回调问题 微信第三方登录点击授权后无法在WXEntryActivity中回调执行onresp方法怎么解决啊? 解决方案 http://blog.csdn.net/qq247890212/article/details/40822481

app-网站第三方登陆(微信)

问题描述 网站第三方登陆(微信) pc端的access_token 和app端的access_token 不一样 用同一个微信账号登陆的结果获取的access_token不是一个,求解 3Q 解决方案 access_token的有效期是7200秒(两小时),在有效期内,可以一直使用,只有当access_token过期时,才需要再次调用接口获取access_token.在理想情况下,一个7x24小时运行的系统,每天只需要获取12次access_token,即每2小时获取一次.如果在有效期内,再次获

app-android APP使用友盟第三方登陆,微信可以登陆,QQ 登陆提示登陆失败,错误码:100044

问题描述 android APP使用友盟第三方登陆,微信可以登陆,QQ 登陆提示登陆失败,错误码:100044 使用友盟的第三方登陆实现微信和QQ登陆app,使用keystore微信可以登陆,QQ提示100044错误 :直接用eclipse运行qq可以登陆,但无法跳转到微信登陆页面: 解决方案 http://bbs.umeng.com/thread-5756-1-1.html

网站第三方登陆可以用微信公众号的功能来做吗?

问题描述 网站第三方登陆可以用微信公众号的功能来做吗? 想做一个第三方登陆的功能,公众号也有提供网页调用的接口,跟开放平台的有什么区别? 解决方案 微信公众号(以前叫服务号.订阅号)的接口,主要是做消息推送,自动消息应答等等. 你需要的和它没什么关系,你需要的是微信作为第三方账户验证登录.微信支持基于OA2.0方式的验证,参考:http://www.tuicool.com/articles/3qayU3Fhttp://blog.csdn.net/kmyhy/article/details/473

关于java第三方登陆

问题描述 求大神指导第三方账号登陆自己网站该如何实现求具体的思路有代码详解更好项目还未上线想请教具体的方法 解决方案 解决方案二: 解决方案三:顶个,也想了解解决方案四:做过类似的一般是账号密码什么的在对方校验成功以后对面通过接口给你直接传递用户相关信息过来你接受以后调用你们这边的登录逻辑让客户登录关键是在接口的合法性校验这一点吧解决方案五:数据模拟提交.解决方案六:联邦认证,在网上找OAuth2协议,很多开源包可以实现认证流程跟微信第三方认证类似,第三方登录你的系统的时候,你的系统先会向用户弹

PHP版微信第三方实现一键登录及获取用户信息的方法_php技巧

本文实例讲述了PHP版微信第三方实现一键登录及获取用户信息的方法.分享给大家供大家参考,具体如下: 注意,要使用微信在第三方网页登录是需要"服务号"才可以哦,所以必须到官方申请. 一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名 前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以