精易论坛

标题: 关于VX扫码登陆获取openid的问题 [打印本页]

作者: tete    时间: 2023-1-7 11:19
标题: 关于VX扫码登陆获取openid的问题
各位大佬们好,最近我想用开放平台 做个易语言扫码登陆。登陆之后的回调地址是我用PHP写的直接返回openid。
就是我想咨询一下,我该如何获取我回调信息的json值呢.如我这个例子所示,他状态码405成功之后,就已经回调到我的地址上打印出openid了。我应该怎么来获取到这个openid呢?

这是扫码之后回调显示的openid,下面那个是rc4加密的字符串。
下面这个是我demo。
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  

子程序名返回值类型公开备 注
获取二维码  
变量名类 型静态数组备 注
局_网址文本型 
局_方式整数型 
局_提交cookie文本型 
局_结果字节集 
局_返回文本型 
uuid文本型 
状态码文本型 
i整数型 
二维码地址文本型 
code文本型 
access_token文本型 
openid文本型 
到文本文本型 
局_结果 = 网页_访问_对象 (https://open.weixin.qq.com/conne ... ATE#wechat_redirect, , , , , , , , , , , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))
' [url=https://open.weixin.qq.com/connect/qrconnect?appid=wx60685c85cbbc7bcf&redirect_uri=https%3A%2F%2Fq.i1go.com%2Findex.php%2Findex%2FUser%2FgetUserInfo&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect]https://open.weixin.qq.com/conne ... ATE#wechat_redirect[/url]
uuid = 文本_取出中间文本 (局_返回, “uuid=”, “#引号”, , )
调试输出 (uuid)
如果真 (uuid ≠ “”)
' 加入日志 (“获取二维码成功,请扫码!”)
二维码地址 = https://open.weixin.qq.com/connect/qrcode/ + uuid
' [url=https://open.weixin.qq.com/connect/qrcode/0019hDTi42ZQFa1q]https://open.weixin.qq.com/connect/qrcode/0019hDTi42ZQFa1q[/url]
局_方式 = 0
局_结果 = 网页_访问_对象 (二维码地址, 局_方式, , , , , , , , , , , , , , , , , )
局_返回 = 到文本 (局_结果)
图片框1.图片 = 图片_缩放 (局_结果, 200, 200, )
调试输出 (局_返回)
如果真 (寻找文本 (局_返回, “抱歉,出错了”, , ) = -1)
计次循环首 (40, i)
局_网址 = http://long.open.weixin.qq.com/connect/l/qrconnect?uuid= + uuid
局_方式 = 0
局_结果 = 网页_访问_对象 (局_网址, 局_方式, , , , , , , , , , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))
调试输出 (“回调|” + 局_返回)
状态码 = 文本_取出中间文本 (局_返回, “window.wx_errcode=”, “;window”, , )
如果真 (状态码 = “400”)
调试输出 (“二维码失效重新获取”)
' 加入日志 (“二维码失效重新获取”)
跳出循环 ()
如果真 (状态码 = “404”)
调试输出 (“用户扫码成功 等待手机确认登陆”)
' 加入日志 (“用户扫码成功 等待手机确认登陆”)
如果真 (状态码 = “405”)
' 加入日志 (“登陆成功”)
code = 文本_取出中间文本 (局_返回, “window.wx_code'”, “';”, , )
局_网址 = https://api.weixin.qq.com/sns/oa ... ffbe60dcc3eb3&code= + code + “&grant_type=authorization_code”
' [url=https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code]https://api.weixin.qq.com/sns/oa ... =authorization_code[/url]
局_方式 = 0
局_结果 = 网页_访问_对象 (局_网址, 局_方式, , , , , , , , , , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))
调试输出 (局_返回)
json.解析 (局_返回, , )
access_token = json.取通用属性 (“['access_token']”, )
openid = json.取通用属性 (“openid”, )
调试输出 (access_token)
调试输出 (openid)
跳出循环 ()
如果真 (状态码 = “403”)
调试输出 (“用户取消”)
' 加入日志 (“用户取消扫码,请重新获取!”)
跳出循环 ()
如果真 (状态码 = “408”)
调试输出 (“等待用户扫码”)
' 加入日志 (“等待用户扫码”)
程序_延时 (2, 1)
计次循环尾 ()
返回 ()
子程序名返回值类型公开备 注
_按钮1_被单击  
启动线程 (&获取二维码, , )


i支持库列表   支持库注释   
spec特殊功能支持库
EThread多线程支持库

作者: moys520    时间: 2023-1-7 11:25
循环请求你的那个回调接口,设置一定的sleep,然后如果取到了数据,你在你的php删掉这个数据,防止下次还能取到,然后易语言跳出循环(或者说本来就是判断循环)

补充内容 (2023-1-7 11:25):
不知道说清了吗
作者: tete    时间: 2023-1-7 11:31
moys520 发表于 2023-1-7 11:25
循环请求你的那个回调接口,设置一定的sleep,然后如果取到了数据,你在你的php删掉这个数据,防止下次还能 ...

开放平台返回的code是一次性的,我的源码里面已经能获取到了code。但是这个获取的code我已经做到了自己回调的接口里面,就等于是扫码之后,直接把中间的获取code,换取access_token都在php里做了。就直接输出openid了
作者: rsdmishi    时间: 2024-3-15 20:37
大佬 现在获取CODE后。最后这个接口失效了么!

VX图片_20240315203604.png (68.18 KB, 下载次数: 0)

VX图片_20240315203604.png

VX图片_20240315203735.png (7.24 KB, 下载次数: 0)

VX图片_20240315203735.png

作者: tete    时间: 2024-3-16 04:34
rsdmishi 发表于 2024-3-15 20:37
大佬 现在获取CODE后。最后这个接口失效了么!

没有失效,可以看VX官方文档




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4