微信无法授权登录怎么办
参考微信开放文档
https://openweixinqqcom/cgi-bin/showdocumentaction=dir_listt=resource/res_listverify=1id=open1419317851token=lang=zh_CN
准备工作
移动应用微信登录是基于OAuth20协议标准 构建的微信OAuth20授权登录系统。
在进行微信OAuth20授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。
1、目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。
2、对于Android应用,建议总是显示微信登录按钮,当用户手机没有安装微信客户端时,请引导用户下载安装微信客户端。
3、对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已安装微信客户端(使用sdk中isWXAppInstalled函数 ),对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)
授权流程说明
微信OAuth20授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth20的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。
微信OAuth20授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:
1 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
第一步请求code
移动应用微信授权登录
开发者需要配合使用微信开放平台提供的SDK进行授权登录请求接入。正确接入SDK后并拥有相关授权域(scope,什么是授权域?)权限后,开发者移动应用会在终端本地拉起微信应用进行授权登录,微信用户确认后微信将拉起开发者移动应用,并带上授权临时票据(code)。
1、向微信开放平台请求授权码code,可拉起微信并打开授权登录页(前提是你安装了微信应用并已登录,未登录的会引导你先登录)
2、用户点击授权后,微信客户端会被拉起,跳转至授权界面,用户在该界面点击允许或取消
3、客户端收到授权码后,向自己的服务器发起登录请求,并附带收到的授权码。
4、服务端收到登录请求,向微信开放平台请求获取access_token,微信开放平台返回Json字符串
参数说明:
appid 必填 应用唯一标识,在微信开放平台提交应用审核通过后获得
scope 必传 应用授权作用域,如获取用户个人信息则填写snsapi_userinfo
state 非必传 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
返回示例:
ppid: wxd477edab60670232
scope: snsapi_userinfo
state: wechat_sdk_demo
返回说明
用户点击授权后,微信客户端会被拉起,跳转至授权界面,用户在该界面点击允许或取消,SDK通过SendAuth的Resp返回数据给调用方。
ErrCode ERR_OK = 0(用户同意) ERR_AUTH_DENIED = -4(用户拒绝授权) ERR_USER_CANCEL = -2(用户取消)
code 用户换取access_token的code,仅在ErrCode为0时有效
state 第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传,state字符串长度不能超过1K
lang 微信客户端当前语言
country 微信用户当前国家信息
第二步:通过code获取access_token(在自己服务器端做)
获取第一步的code后,请求以下链接获取access_token:
https://apiweixinqqcom/sns/oauth2/access_tokenappid=wx99db1b2e36a18b9dsecret=4d872f5363f0ee2259c9bfb46cc30478code=001JgDdb0eMDTy1ZLohb0x8vdb0JgDdUgrant_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_in access_token 接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token
openid 授权用户唯一标识
scope 用户授权的作用域,使用逗号(,)分隔
unionid 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
第三步:通过access_token调用接口
通过第二步获取到access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作
https://apiweixinqqcom/sns/userinfoaccess_token=20_c8Hadnvec4liYYdZOWeDzC9D3CuAWjPheSm7WUmOEpTPbzcP11tB_VvOBHeWjBOcpJMEGXqtwNT70ilvNc0w_A3nzarpZMwgOHKOdYLJWoIopenid=otzOK1N2RGS3gyb6Ka8o4D_K4gwwlang=zh_CN
参数:
1、access_token有效且未超时
2、微信用户已授权给第三方应用帐号相应接口作用域(scope)
响应:
nickname 微信昵称
openid=otzOK1N2RGS3gyb6Ka8o4D_K4gww
unionid=o1u0Gv_q9SDFaZrqarIpjnaPG9Hw
第四步微信登录及绑手机号
微信登录判断是否绑定手机号
如果未绑定接口返回is_bind为false,进入帮手机号页面,调绑定手机号接口
如果已绑定接口返回is_bind为true,直接登录成功,返回token
http://url/10/user/wechat/login
wechat_open_id=o1u0Gv_q9SDFaZrqarIpjnaPG9Hw
{code:0,msg:成功,data:{token:,is_bind:false}}
绑定手机号
http://url/10/user/wechat/bindcaptcha=123456mobile=18221124104wechat_avatar=wechat_name=新仁类测试微信号@¥wechat_open_id=
o1u0Gv_q9SDFaZrqarIpjnaPG9Hw
第五步:微信重复登录
假设用户已经获得授权,则下次登录时只需要验证access_token是否有效,无效则重新获取授权,有效则无需重新获得授权。
1用户向自己的服务器请求登录,登录方式为微信登录,附带上次登录返回的的access_token
2服务器收到用户的登录请求,向微信开放平台发送access_token是否有效的验证请求如下:
3服务端获取到新的access_token等信息,并返回给客户端,客户端成功登录或者重新获取授权。
第六步:测试用例
1、手机号登录,授权、绑定微信成功,用户微信信息检测
2、手机登录,已绑定微信,再次绑定此微信检测
3、手机登录,已绑定微信,再次绑定其它微信(未绑定手机号的)检测
4、B用户手机号登录,微信A已被A用户手机号绑定,B用户绑定微信A检测
5、微信登录,授权、强制绑定手机号成功,用户微信信息检测
6、微信登录,已绑定手机号,再次绑定此手机号检测
7、微信登录,已绑定手机号,再次绑定其他手机号(未绑定微信的)检测
8、B用户微信登录,微信A已被A用户手机号绑定,B用户绑定A手机号检测
9、账号登录,绑定微信检测
10、微信登录绑定手机号成功、手机号登录绑定微信成功,数据库更新wechat_name、wechat_avatar、wechat_open_id、is_bind_avatar
11、微信登录绑定手机号成功、手机号登录绑定微信成功,微信登录、手机号登录检测
12、微信授权登录成功,进入强制绑定手机号页面
13、未安装微信,进入登录页面,未显示微信检测
14、进入登录页面、进入app绑定微信页面,删除微信,点微信登录、绑定微信检测
15、微信登录成功,进入绑定手机号页面,删除微信,绑定手机号检测
16、未登录微信、已登录微信,微信登录进入微信登录页面,再返回、绑定微信进入微信登录页,再返回检测
17、弱网、断网,微信登录、绑定手机号、绑定微信检测
18、微信授权、登录失败;绑定微信、绑定手机号失败检测
首先注册第三方系统账号。
2登录系统选择绑定公众号。
3首先看到的4个圆圈是对应的公众号名称、微信号、二维码和公众号类型 。
4然后依次对应图中找到公众号原始id、AppID(公众号)、AppSecret, 注意第一次开启开发者中心会需要点一个确定按钮AppSecret点击显示需要管理员扫描二维码才能获取到完整的AppSecret以上三个值获取完成后请勿关闭微信公众平台页面。
5点回微信公众平台找到开发者中心,编辑服务器配置将刚才看到的三个值填到对应的框里,然后提交,提交之后点击右侧启用,这里注意一定要点击启用。
微信公众平台测试号拥有服务号的所有功能,包括高级接口;但要注意的是,测试号在你申请后1年会失效。目前微信公众平台已经可以接入硬件设备,并且最近已经支持个人开发者接入。也就是说现在个人开发者已经可以通过测试号开发测试自己的硬件设备接入微信了(本人已经现实)。
其实对于拥有服务号的业务用户来说,也可以先通过申请测试号来先进行测试开发,等到和微信达成接入协议、申请通过之后再转到服务号进行产品发布。
值得一提的是,目前虽然微信公众平台已经可以接入硬件设备,并支持蓝牙和WIFI两种方式接入,但都是简单的接入,具体的功能还是需要开发者自己去做的。特别是WIFI的接入,由于和蓝牙采用不同的方式,用户设备状态信息需要通过厂商服务器反馈给微信服务器,再到微信客户端,目前这个功能微信团队正在开发。
小鸟云服务器niaoyun实例创建好之后,您可以使用以下任意一种方式登录服务器:
远程桌面连接(MicrosoftTerminalServicesClient,MSTSC):采用这种方式登录,请确保实例能访问公网。如果在创建实例时没有购买带宽,则不能使用远程桌面连接。
管理终端VNC:无论您在创建实例时是否购买了带宽,只要您本地有网页浏览器,都可以通过管理控制台的管理终端登录实例。
使用远程桌面连接(MSTSC)登录实例
打开开始菜单>远程桌面连接,或在开始菜单>搜索中输入mstsc。也可以使用快捷键Win+R来启动运行窗口,输入mstsc后回车启动远程桌面连接。
在远程桌面连接对话框中,输入实例的公网IP地址。单击显示选项。
输入用户名,如小鸟云默认为niaoyun。单击允许我保存凭据,然后单击连接。这样以后登录就不需要手动输入密码了。
本文主要介绍了本地搭建微信小程序服务器的实现方法的相关资料,希望通过本文能帮助到大家,让大家轻松的搭建自己的微信小程序的服务器,需要的朋友可以参考下,希望能帮助到大家。
本地搭建微信小程序服务器的实现方法
现在开发需要购买服务器,价格还是有点贵的,可以花费小代价就可以搭建一个服务器,可以用来开发小程序,博客等。
1域名(备案过的)
2阿里云注册免费的https证书
3配置本地的nginx
4内网映射(本地安装wampserver 服务器)
一、域名
注册花生壳,开通内网映射需要8元(我开通时需要,现在不清楚还要不要),里面可以注册2个免费的域名,都是免备案的。具体的请自行百度,花生壳注册地址
二、申请阿里云免费的https证书
阿里云免费的https证书地址
这个步骤相对来说比较简单,需要注意的地方也不多,按照阿里云官方的提示来,就能够操作成功了。值得注意的是你在申请证书过程中,证书是免费的,你不用付费,但是需要下单,下单完成后需要完善你的域名信息,然后提交审核。审核完成后,官方自动给你发放证书,顺利的话一个小时就能搞定。
注意:
1通过花生壳,内网映射出本地的访问地址
2把阿里云证书补全信息的域名填写完成后,阿里云会进入 审核中,需要下载他的一个fileauthtxt 文件
i在进度查询页面,单击 fileauthtxt 验证文件,下载到本地。
ii在您的站点服务器的根目录创建well-known/pki-validation,创建文件夹Windows命令是 md "well-known" 子目录pki-validation。
iii将 fileauthtxt 验证文件上传到well-known/pki-validation目录下 目录。 完成后,可通过验证 URL 地址(http://acom/well-known/pki-validation/fileauthtxt )访问。 参考如何配置域名授权验证
三、配置本地的nginx(主要是Apache的https配置太繁琐了)
下载证书文件
imagepng
配置nginx中的nginxconf文件,证书要放在conf/cert目录下,具体的代码
server {
listen 443;
server_name 111681150;
ssl on;
root "D:/works/wamp";
charset utf-8;
index indexhtml indexhtm;
ssl_certificate cert/214296869710097pem;#替换成你的文件
ssl_certificate_key cert/214296869710097key;#替换成你的文件
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv11 TLSv12;
ssl_prefer_server_ciphers on;
location / {
root "D:/works/wamp";
index indexhtml indexhtm indexphp;
proxy_pass http://111681150:8081;
}
}四、配置花生壳的内网映射
注意:
花生壳的映射不能设置为80端口的映射(我也没找到原因在哪,客服反馈是要设置自定义端口)
成功之后,对外访问的地址
最后上个配置成功后,请求的效果吧!
0条评论