微信登陆功能开发者索引

微信登录是指App和网站应用,可以通过接入该功能,让用户可以通过微信帐号登录,并且用户同意后将用户基本信息(头像、昵称、性别、地区、语言)提供给开发者。大大降低了用户注册、登录的门槛,借助庞大的微信用户群,给App带来更多新用户。

微信登录功能申请已经向开发者开放,只要微信开放平台帐号通过开发者资质认证,其帐号下所有的App和网站应用将自动获得微信登录权限。

一、申请权限

通过微信开放平台开发者资质认证的开发者,其帐号下所有的移动应用和网站应用自动获得微信登录权限。

第一步:访问微信开放平台网站(open.weixin.qq.com),点击进行开发者注册,已经有帐号的可以直接登录。

第二步:申请微信开发者认证,在帐号中心申请开发者认证。

第三步:申请提交应用,进入管理中心,点击“创建移动应用”或者“创建网站应用”,填写资料后等待审核,审核通过后就会获得AppID和AppSecret。

二、搭建接入环境

获得AppID和AppSecret后,前往微信开放平台资源中心下载对应平台的SDK集成到App的工程文件中。开发环境搭建方法可参考微信开放平台资源中心文档:

iOS接入环境搭建方法:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=&lang=zh_CN

Android接入环境搭建方法:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

三、微信登录接入开发(以移动应用开发为例)

微信登录授权流程大致分为以下步骤:

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;

3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

第一步:请求CODE

开发者在集成了微信SDK的App中调用微信登录接口。

iOS平台应用授权登录接入代码示例:

(void)sendAuthRequest { //构造SendAuthReq结构体 SendAuthReq* req =[[[SendAuthReq alloc ]init ] autorelease ]; req.scope = @"snsapi_userinfo"; req.state = @"123" ; //第三方向微信终端发送一个SendAuthReq消息结构 [WXApi sendReq:req]; }

Android调用如下代码:

{ // send oauth request Final SendAuth.Req req = newSendAuth.Req(); req.scope = "snsapi_userinfo"; req.state ="wechat_sdk_demo_test"; api.sendReq(req); }

微信客户端会被拉起,跳转至授权界面

用户在该界面点击允许或取消,SDK通过SendAuth的Resp返回code数据给调用方。

第二步:通过code获取access_token

获取第一步的code后,App要将code传回App的后台服务器,后台服务器请求以下链接获取access_token:

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

参数:appid和secret填入在申请移动应用的时候开放平台分配的字段,可在应用详情中获得,code填写第一步获得的code,grant_type固定填写为authorization_code。

特别注意:请在任何情况下都不要将secret和code泄漏给其他人,也不要保存在App客户端中,防止造成敏感信息泄漏。

调用成功后返回如下信息:

{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE", "unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL" }

注意:access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天。

请求接口如下:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

第三步通过access_token调用接口

获得access_token后,通过一下接口可以获得用户基本信息。

http请求方式: GET

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

返回信息如下:

{ "openid":"OPENID", "nickname":"NICKNAME", "sex":1, "province":"PROVINCE", "city":"CITY", "country":"COUNTRY", "headimgurl":"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "privilege":[ "PRIVILEGE1", "PRIVILEGE2" ], "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" }

注意:这一步同样要在App客户端后台进行,不要将ACCESS_TOKEN暴露到或者保存在App客户端中,后台获取到用户基本信息后,保存到相应的用户帐户数据库中,再由App客户端访问数据库后展现给用户。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安恒信息

“圣诞怪杰”Grinch:比Bash破壳(shellshock)更严重的Linux漏洞

安全研究人员在Linux操作系统中发现了一个名为圣诞怪杰(Grinch)的漏洞,该漏洞存在于linux系统中,和Bash破壳(shellshock)漏洞(CNN...

36670
来自专栏Java技术分享圈

杨老师课堂_安卓教程第一篇之入门

9620
来自专栏一“技”之长

Xcode创建可复用的代码块 原

        在各种程序开发中,编写代码的效率是非常重要的一个问题,各种优秀的编译器也都有相应的插件用于提高程序员的编码速度。在xcode中,可以通过定义代码...

16020
来自专栏FreeBuf

5分钟教程:如何通过UART获得root权限

写在前面的话 你知道物联网设备以及其他硬件制造商是如何调试和测试自家设备的吗?没错,绝大多数情况下,他们都会留下一个串行接口,这样就可以利用这个接口并通过she...

34060
来自专栏葡萄城控件技术团队

优化Webpack构建性能的几点建议

Webpack 作为目前最流行的前端构建工具之一,在 vue/react 等 Framework 的生态圈中都占据重要地位。在开发现代 Web 应用的过程中,W...

21570
来自专栏SpringBoot 核心技术

SpringBoot核心技术:Actuator自定义节点路径 & 监控服务自定义配置

路径都是一样的,很容易就会暴露出去,导致信息泄露,发生一些无法估计的事情,如果我们可以自定义节点的映射路径或者自定义监控服务的管理信息,这样就不会轻易的暴露出去...

25420
来自专栏好好学习吧

LoadRunner菜鸟入门学习笔记

  11.0 最高ie9( win7 32位+LR11+IE10可用,但win7 64位+LR11+IE10不可用,降至IE9可用),支持firefox3.6、...

2.1K20
来自专栏企鹅号快讯

优化 Webpack 构建性能的几点建议

来源:葡萄城控件 http://www.cnblogs.com/powertoolsteam/p/Webpack.html Webpack 作为目前最流行的前端...

22360
来自专栏云瓣

hexo摸爬滚打之进阶教程

本文首发在我的个人博客:http://muyunyun.cn/ 写博客有三个层次,第一层次是借鉴居多的博文,第二层次是借鉴后经过消化后有一定量产出的博文,第三...

54480
来自专栏张戈的专栏

让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦

前些天给博客添加了一个百度是否收录的查询功能,今天无意点开了一篇显示已收录的查询链接,发现查到的居然不是我的博客博文,而是和我博客一直就有合作的一览 1001 ...

36850

扫码关注云+社区

领取腾讯云代金券