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

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

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

[java]  view plain copy
  1. <pre name="code" class="java">public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
  2. private IWXAPI api;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. // TODO Auto-generated method stub
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.flash_activity);
  8. <span style="color:#3366ff;">api = WXAPIFactory.createWXAPI(this, Property.wxLoginInfo.getAppid(), false);
  9. api.handleIntent(getIntent(), this);</span>
  10. }
  11. @Override
  12. public void onReq(BaseReq arg0) {
  13. // TODO Auto-generated method stub
  14. }
  15. @Override
  16. public void onResp(BaseResp resp) {
  17. Bundle bundle = new Bundle();
  18. switch (resp.errCode) {
  19. case BaseResp.ErrCode.ERR_OK:
  20. //      可用以下两种方法获得code
  21. //      resp.toBundle(bundle);
  22. //      Resp sp = new Resp(bundle);
  23. //      String code = sp.code;<span style="white-space:pre">
  24. //      或者
  25. String code = ((SendAuth.Resp) resp).code;
  26. //上面的code就是接入指南里要拿到的code
  27. break;
  28. default:
  29. break;
  30. }
  31. }
  32. }

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

然后开始和微信通话,

[java]  view plain copy
  1. </pre><pre name="code" class="java">{
  2. // send oauth request
  3. Final SendAuth.Req req = new SendAuth.Req();
  4. req.scope = "snsapi_userinfo";
  5. req.state = "wechat_sdk_demo_test";
  6. api.sendReq(req);
  7. }

这一步就是和微信要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://blog.csdn.net/qq247890212/article/details/40822481 博主QQ:247890212

微信授权登陆介入第三方APP相关推荐

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

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

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

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

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

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

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

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

  5. 微信授权登陆【yixiyun】

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

  6. java 实现微信授权登陆

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

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

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

  8. uniapp微信公众号微信授权登陆实现

    正常不需要支付的项目一般不需要做微信授权登陆,有业务需要的可以加,我这边项目中使用了微信支付功能所以需要搞个微信授权登陆 进入到登陆页面首先要执行 onLoad(options) {if (optio ...

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

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

最新文章

  1. RDKit | 基于RDKit描述三维分子形状(3D描述符)
  2. (二十三)原型模式详解(clone方法源码的简单剖析)
  3. spring boot 及微服务 学习笔记
  4. 寻找想改变人工智能的“大人物”!2019百度奖学金正式启动
  5. 简历石沉大海、面试被刷?拒绝你的HR小姐姐,可能只是个AI
  6. c++的头文件与源文件
  7. 如何在asterisk中限制呼叫路数?
  8. www.beihua.edu.cn计划摘录
  9. android 库编译报错,Android Studio编译项目报错
  10. iotop iostat_适用于SQL Server DBA的有用的Linux命令– iotop和iostat
  11. 用于Ubuntu 16.04和18.04的TensorFlow,Keras,Caffe,Caffe,CUDA,cuDNN和NVIDIA驱动程序的单行安装
  12. 接收URL参数乱码问题
  13. 《数学之美》—有限状态机和动态规划
  14. 基于Jsp的简单论坛(BBS)的设计与实现(附代码)
  15. 替代NXP的CLRC663国产芯片来了,再也不用被老外卡脖子了
  16. UE使用EditorUtilityWidget完成简单的编辑器内工具
  17. 蚂蚁金服 Service Mesh 落地实践与挑战,附全套PPT下载
  18. Hybrid eye center localization using cascaded regression and hand-crafted model fitting
  19. 计算机无法读取配置文件,由于权限不足,无法读取配置文件
  20. reactjs中使用高德地图计算两个经纬度之间的距离

热门文章

  1. 微信公众号2017年发展趋势分析解读
  2. AcWing 95. 费解的开关
  3. idea方法快速赋值变量
  4. 写实风格头发建模,八猴这个功能杠杠的!次世代建模必备
  5. VB.NET MethodInfo使用方法
  6. 让普通视频变成慢动作:「AI加帧」技术现已开源
  7. golang——反射
  8. 初识平面设计(二)——名片的设计与输出
  9. 2345 看图王广告弹窗 删除
  10. Swift自定义导航栏返回按钮