android微信登录,分享

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

很多微信公众平台的应用如果移植到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下面建个包就完了。(粗心这毛病害死人啊。)

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

 <pre name="code" class="java">public class WXEntryActivity extends Activity implements IWXAPIEventHandler{  
  
  private IWXAPI api;  
  @Override 
  protected void onCreate(Bundle savedInstanceState) {  
  // TODO Auto-generated method stub 
  super.onCreate(savedInstanceState);  
         setContentView(R.layout.flash_activity);  
         <span style="color:#3366ff;">api = WXAPIFactory.createWXAPI(this, Property.wxLoginInfo.getAppid(), false);  
         api.handleIntent(getIntent(), this);</span>  
     }  
  
  @Override 
  public void onReq(BaseReq arg0) {  
  // TODO Auto-generated method stub 
  
     }  
  
  @Override 
  public void onResp(BaseResp resp) {  
         Bundle bundle = new Bundle();  
  switch (resp.errCode) {  
  case BaseResp.ErrCode.ERR_OK:  
 //      可用以下两种方法获得code 
 //      resp.toBundle(bundle); 
 //      Resp sp = new Resp(bundle); 
 //      String code = sp.code;<span style="white-space:pre"> 
 //      或者 
         String code = ((SendAuth.Resp) resp).code;  
  //上面的code就是接入指南里要拿到的code 
  
  break;  
  
  default:  
  break;  
         }  
  
     }  
 }  

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

这是那个WXEntityAcitivity的部分代码。结合接入指南,大家应该都看的懂。

然后开始和微信通话,

 </pre><pre name="code" class="java">{   
 // send oauth request  
 Final SendAuth.Req req = new SendAuth.Req();  
 req.scope = "snsapi_userinfo";  
 req.state = "wechat_sdk_demo_test";  
 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

keytool -storepasswd -keystore my.keystore (在cmd里执行的命令)

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

alias的名称要改为:androiddebugkey

keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey

这一步中,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://download.csdn.net/detail/xiangzhihong8/9263557

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

Oracle跨平台迁移的简单总结(r10笔记第91天)

前段时间测试了一下GoldenGate,结合我之前的一些尝试,对于小机环境的迁移,思路是逐步清晰了起来。 需求的核心是跨平台迁移数据库,最好能够升级到新的版本,...

386130
来自专栏web前端教室

聊一下get和post的区别?

image.png 网上看了些资料,看了半天,往深里想,我自己也说不清楚了。所以决定写个东西分享一下,给你们分享一下,我就会了不少,哈哈。这就是分享就是学习...

217100
来自专栏java达人

总结 XSS 与 CSRF 两种跨站攻击

作者:Jiangge Zhang 来源:https://blog.tonyseek.com/post/introduce-to-xss-and-csrf/(点击...

29280
来自专栏Linyb极客之路

APP架构设计经验谈:APP登录自动登录—token

程序员总能给自己找到偷懒的方法,有的程序为了省事,会在用户登录后,直接把用户名和密码保存在本地,然后每次调用后端接口时作为参数传递。真省事儿啊!可这种方法简单就...

1.7K40
来自专栏KaliArch

Python构建企业微信自动消息转发服务端

目前有在项目分组,就小组成员中,微信群消息回复较多的情况下,想根据组来转发特定消息,包含文字、图片、语言等。在此只是自己实现仅供参考,可以根据自身需求修改更多功...

45150
来自专栏北京马哥教育

预防高逼格Linux黑客招数,不学你就后悔吧!

本文由马哥教育Linux云计算面授班24期学员推荐,转载自互联网,作者为And,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 很多人都...

32770
来自专栏网站漏洞修补

网站快照被劫持 标题描述被篡改成博彩内容的解决方法

三年前用dedecms织梦系统,帮公司设计了一个网站,平常的网站更新,以及优化也都是我在负责,前段时间发现网站的流量越来越少,用爱站站长工具查看了一下,竟然发现...

39450
来自专栏信安之路

【作者投稿】Slowhttptest攻击原理

Slowhttptest其实是一个DoS压力测试工具,它集成有三种慢速攻击模式(slowloris、slow http post、slow read attac...

34100
来自专栏腾讯Bugly的专栏

Android 进程保活招式大全

目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对 Android 进程拉活进行一个总结。 Android 进程拉活包括两个...

78870
来自专栏ThoughtWorks

8大前端安全问题(下)| 洞见

在《8大前端安全问题(上)》这篇文章里我们谈到了什么是前端安全问题,并且介绍了其中的4大典型安全问题,本篇文章将介绍剩下的4大前端安全问题,它们分别是: 防火防...

38980

扫码关注云+社区

领取腾讯云代金券