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

很多微信公众平台的应用如果移植到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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.flash_activity);<span style="color:#3366ff;">api = WXAPIFactory.createWXAPI(this, Property.wxLoginInfo.getAppid(), false);api.handleIntent(getIntent(), this);</span>}@Overridepublic void onReq(BaseReq arg0) {// TODO Auto-generated method stub}@Overridepublic 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就是接入指南里要拿到的codebreak;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里面。就可以直接调试微信相关的功能了。

大概就这几点吧。

微信授权登陆接入第三方App(步骤总结)Android。相关推荐

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

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

  2. android微信登录用户绑定,微信授权登陆接入第三方App(步骤总结)Android

    Linux的学习--crontab 之前了解过一点crontab,前段时间比较闲,就熟悉了一下,今天总结记录一下. crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指 ...

  3. 微信授权登陆介入第三方APP

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

  4. 如何实现自有App上的小程序第三方微信授权登陆?

    对于微信小程序来说,有 OpenID 或 UnionID 作为唯一标识,微信授权登陆小程序账号是很容易实现的,但对于其他应用上的小程序来说(如支付宝.百度等),打通该登陆方式是比较麻烦的. 之前在Fi ...

  5. 微信授权登陆【yixiyun】

    1,引入相关依赖(主要是最后一个) <dependency><groupId>com.github.binarywang</groupId><artifact ...

  6. 微信小程序接入第三方插件腾讯位置服务地图选点

    微信小程序接入第三方插件腾讯位置服务地图选点 1.在小程序服务平台中添加"腾讯位置服务地图选点"插件 1.在小程序服务平台中添加"腾讯位置服务地图选点"插件 微 ...

  7. java 实现微信授权登陆

    附官方文档地址:小程序登陆 | 微信开放文档 编码前准备工作:开发之前我们需要准备两个东西AppID和AppSecret,需要到微信开放平台(https://open.weixin.qq.com)注册 ...

  8. web pc端 微信授权登陆 实例详解

    首先,看看微信官方文档,了解一下具体实现步骤 微信官方文档: 微信登陆开发指南 基本了解了微信登陆的流程后,然后我们再来一起踩坑 1.先去微信公众平台申请网站,appId,设置域名 2.调用微信地址生 ...

  9. 微信授权登陆界面无法再次弹出,无法用户切换

    微信授权登陆界面无法再次弹出,无法用户切换 一开始在项目中总是发现微信登录只在第一次给用户授权,后面微信登录后就不显示授权登录的界面.这样就导致微信用户无法切换,无法进行新用户的授权.查了很久才找到解 ...

最新文章

  1. python批量下载网页文件-Python批量下载网页图片详细教程
  2. STM32:RTC闹钟唤醒
  3. visual studio 设计器不显示_设计模式 | Iterator设计模式
  4. 彻底搞懂阻塞、非阻塞、同步、异步
  5. 【新星计划】怎么写好技术博客?
  6. 身份认证之多因素身份认证(MFA)
  7. Pycharm ssh远程调试报错: cannot connect to X server的解决方法
  8. Microsemi Libero SoC 教程2 (点亮LED闪烁)
  9. feologit:固定效应有序Logit模型
  10. (莱昂氏unix源代码分析导读-19)再谈进程swtch
  11. 关于监听Android的静音键以及音量按键
  12. Win10睡眠后自动唤醒启动的问题
  13. Datav:从零开始的数据可视化大屏搭建系统
  14. 汉罗塔用java怎么编程_编程:递归编程解决汉诺塔问题(用java实现)
  15. Kubernetes IPVS和IPTABLES
  16. 通过身份证简单获取省市等信息
  17. java castor_Castor功能与应用参考二
  18. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像
  19. Stlink无法检测到芯片
  20. win10 wsappx禁用问题

热门文章

  1. 张无忌当年究竟对她做了什么?走进爱恨情仇,探究他与她之间的瓜葛!
  2. 税务异常的公司如何办理注销?
  3. python采集最新世界大学排名, 来看看你的母校上榜没~
  4. 网易有道三季报解读:转型“有道”,但依旧道阻且长
  5. 【百度AI开放平台】植物识别
  6. kali linux窗口变大,kali怎么把屏幕放大
  7. Web应用防火墙WAF简介
  8. DMA RDMA 技术详解
  9. 菜谱 延安特色美食小吃
  10. eBPF-4-perf_map的丢失事件lost_event解读