首页 > 编程知识 正文

二维码管理系统开发,微信2

时间:2023-05-04 12:41:13 阅读:147162 作者:3558

1、OAuth2.0

  OAuth(开放许可证)是开放标准,用户不将用户名和口令提供给第三方APP应用程序,而是存储在第三方APP应用程序所在站点的专用资源)

允许用户提供一个令牌而不是用户名和密码来访问他们存放在特定服务提供者的数据。 每个令牌都允许特定站点(例如,视频编辑站点)在特定时间段(例如,接下来的两个小时内)访问特定资源(例如,仅一张专辑中的视频)。 这样,OAuth就可以使第三方网站访问存储在其他服务提供商上的信息,而无需共享权限或数据的所有内容。 2、目标这里主要模拟的是使用OAuth2.0,用户通过扫描我们的web APP应用程序的二维码并进行授权注册来获取用户基本信息的过程。 有关详细界面的信息可以在wechatopen平台上找到。 https://open.weixin.QQ.com/CGI-bin/show document? action=dir _ listt=resource/RES _ list verify=1lang=zh _ cn3,提前准备(获取微信开发者权限)。这里主要针对网站(Web ) APP应用程序网站APP应用程序的微信注册基于OAuth2.0协议标准。如果您是微信客户端的授权注册(获取用户信息),请访问:http://www.cn blogs.com/02008 5131602 .在html对微信2.0进行许可注册访问之前,请访问微信3358 ww.siit ml

3.1、注册开发者账户为https://open.weixin.qq.com/可以在此申请开发的账户。 因为是腾讯的页面,所以在这里可以直接用QQ号码登录。 3.2、提交网站应用审核,在注册界面中选择“管理中心”——“网站应用——”创建网站应用后,必须显示并填写以下界面,然后填写另一页: 纸质申请书扫描(提供模板,需要下载填写后盖章、签名)、回调域名)扫描注册后跳转的页面)等。 之后,提交审查就可以了。 请等待微信审查通过。 我们可以获得所需web APP应用程序的开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。。 (这三点是我们开发所必需的。 3.3、开发者资格认证在这里使用微信登录界面,所以我们还需要提交微信认证,只有经过认证才能使用微信高级界面。 未经认证如下图所示经过认证后,我现在暂时没有找到对公众账号这样的测试账号的申请。 如果有海燕担心如何申请测试账户,希望你能告诉我。 现在,我们可以开始我们网页的微信扫描码注册开发了。 4、许可证流程说明微信OAuth2.0的许可证注册,允许微信用户使用微信身份安全登录第三方APP应用或网站。 允许微信用户登录访问微信OAuth2.0的第三方APP应用程序后,第三方获得用户界面调用证书(access_token ),然后单击、 可以通过access_token对微信开放平台进行许可证关系界面调用,从而使微信2.0许可证登录现在成为授权_代码模式该模型的总体流程如下。

1 .第三方发起微信许可证登录请求,微信用户授权第三方APP应用程序后,微信提升APP应用程序或重定向到第三方网站,进行许可证临时票证代码参数在code参数中添加AppID和AppSecret等,通过API与access_token交换的access_token进行接口调用,获取用户的基本数据资源,用户实现基本操作获取access_token时序图:

5、获取网页二维码时,我们经过微信认证,appid和AppSecret,并配置后回调的域名了我们已经可以获取属于我们页面的二维码。 获取方法很简单,只要打开微信的链接,加上我们的appid和回调域名就可以在网页上打开二维码。 用户在微信客户端上扫描代码并允许登录时,会跳至我们设置的回调域名下。appid和AppSecret,并配置了回调的域名1,此处填写的是域名(字符串而不是URL ),因此请勿使用http://等协议标头; 2、授权回调域名配置规范为全域名,如网页需要授权的域名为www.qq.com,配置后,在此域名下的页面http://www.qq.com/

music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权

5.1、请求url说明

  第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接:

https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

 

 参数说明 参数是否必须说明appid是应用唯一标识(前面认证网页应用中获得)redirect_uri是重定向地址,需要进行UrlEncode(前面认证网页应用中获得)response_type是填codescope是应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可state否用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验  返回说明    用户 允许授权后,将会重定向到redirect_uri的网址上,并且 带上code和state参数 redirect_uri?code=CODE&state=STATE

   若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

redirect_uri?state=STATE

5.2、事例:

  一号店的微信二维码链接如下:

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

   将其复制到浏览器中打开即可获得一号店的二维码,二维码页面如下:

  通过使用微信客户端的扫一扫功能,扫描该二维码,即会跳转到上面填写redirect_uri所在的地址上。假如用户同意授权,这里就获得了微信返回的code参数了。

6、获取用户信息

  假如前面已经获得code。我们可以通过code参数去获取用户openid和access_token,进而获得用户的信息。 6.1、通过code参数获取access_token https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

 参数说明

参数是否必须说明appid是应用唯一标识,在微信开放平台提交应用审核通过后获得secret是应用密钥AppSecret,在微信开放平台提交应用审核通过后获得code是填写第一步获取的code参数grant_type是填authorization_code 返回说明

正确的返回:

{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN","openid":"OPENID", "scope":"SCOPE","unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"} 参数说明access_token接口调用凭证expires_inaccess_token接口调用凭证超时时间,单位(秒)refresh_token用户刷新access_tokenopenid授权用户唯一标识scope用户授权的作用域,使用逗号(,)分隔 unionid当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。

错误返回样例:

{"errcode":40029,"errmsg":"invalid code"} 注意code参数的超时时间是5分钟,且每次请求的code参数的值都不一样。access_token的超时时间是32分钟。 6.2、通过access_token获取用户的基本信息 获取的前提条件 access_token有效且为超时;微信用户已授权给第三方应用账号相应接口作用域(scope)【在二维码生成连接那里填写】 对于接口作用域(scope),能调用的接口有以下: 授权作用域(scope)接口接口说明snsapi_base/sns/oauth2/access_token通过code换取access_token、refresh_token和已授权scope/sns/oauth2/refresh_token刷新或续期access_token使用/sns/auth检查access_token有效性snsapi_userinfo/sns/userinfo获取用户个人信息     使用snsapi_base作用域的授权是扫码之后无需用户点击授权,扫码后直接跳转,用户感觉不到授权了,但这种授权方式能获取的数据量有限,这里我们要获取用户的基本信息,我们需要使用snsapi_userinfo授权。使用snsapi_userinfo授权,扫码后出现类似于下面的授权界面   此接口用于获取用户个人信息。开发者 可通过OpenID来获取用户基本信息。特别需要注意的是, 如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。请注意,在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。    https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

 参数说明

参数是否必须说明access_token是调用凭证(上一个请求中获得)openid是普通用户的标识,对当前开发者帐号唯一(上一个请求中获得)       lang  否国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN 返回说明

正确的Json返回结果:

{ "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"} 参数说明openid普通用户的标识,对当前开发者帐号唯一nickname普通用户昵称sex普通用户性别,1为男性,2为女性province普通用户个人资料填写的省份city普通用户个人资料填写的城市country国家,如中国为CNheadimgurl用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空privilege用户特权信息,json数组,如微信沃卡用户为(chinaunicom)unionid用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

错误的Json返回示例:

{ "errcode":40003,"errmsg":"invalid openid"}

7、总结 

  最近着手开发了微信网页扫码登录和公众号授权登录收获颇丰,两者的开发很类似。以下是我个人摸索过程中发现的两者的异同:

两者都可以通过微信客户端扫码授权的方式,让第三方页面获得微信用户的一些基本信息(昵称、性别、所在地、在微信唯一标示等……)。他们都是通过提供一个链接让用户授权的方式。但网页版需要在页面打开二维码之后授权,而公众号则需要用户先关注了我们的公众号,然后点开公众号里面的链接,确认授权即可。网页扫码登录需要将授权的链接(二维码链接)在网页中打开、而公众号授权登录的链接必须要微信客户端中打开。无论网页扫码登录还是在公众号中授权登录,都是通过授权的方式获得一个code参数,之后通过code参数获取access_token和openid和通过access_token和openid去获取用户的基本信息的请求链接是一样的。在开发公众号授权登录的过程中,我发现了有测试账号的提供,足以满足我们的测试和开发,但在开发网页扫码时,暂时未发现哪里能获取测试账号,我是通过申请获取的。(希望知道哪里有测试账号的请求不安的海燕赐教)。

 公众账号授权登录:http://www.cnblogs.com/0201zcr/p/5131602.html

微信公众号群发消息:http://www.cnblogs.com/0201zcr/p/5866296.html

    致谢:感谢您的阅读!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。