请教各位一下,微信内授权登录,这样的功能该如何实现呢?

2017-10-04 16:01:32 +08:00
 chengxiao
看了微信的文档,迷迷糊糊的,登录方式有好多种,搞迷糊了
我想实现的是 公众号内点底部链接 然后需要微信授权,授权成功后就能访问具体页面了
另外有没有适合 django 的微信开发库呢
4622 次点击
所在节点    Python
16 条回复
zybzzc
2017-10-04 16:35:21 +08:00
参阅公众号开发文档微信网页授权一栏,具体做法是点击之后跳转到微信授权链接,用户授权后会自动重定向到授权链接接中的 redirect_url 并带上 code,浏览器拿到 code 之后传给服务器换取 accesstoken,到这里就算是授权成功了
Sikoay
2017-10-04 16:44:20 +08:00
PHP 我倒是自己二次封装了一版..
zybzzc
2017-10-04 16:44:40 +08:00
@zybzzc 需要说明的是,服务器用浏览器传过来的 code 向微信服务器换取到的 accesstoken 以及 openid 等不应该传回给客户端浏览器
jhdxr
2017-10-04 18:03:37 +08:00
微信授权有不同类别,有需要用户手动点击同意的,也有直接通过的,能访问到的信息不同,但都是 OAuth,跳到微信的一个网址即可。

php 的话我推荐 overture 的。。。Python 的。。。不知道,也许是个自己造轮子的机会?
FullBridgeRect
2017-10-04 19:58:15 +08:00
@jhdxr python 有不止一个轮子,以关键词 django wechat 搜出来一堆结果😂
shiny
2017-10-04 20:03:45 +08:00
公众号内点底部链接的情况,如果是服务号
1. 已关注用户:可以直接获取
2. 未关注的情况下,如果要详细资料需要授权
3. 如果只获取 openid 来区分唯一用户不需要点击授权

如果是订阅号:不行,但你可以配置一个第三方的服务号,通过 unionid 关联到当前订阅号

造个轮子并不难,时间多的话可以试试,还是比较有乐趣的。
chengxiao
2017-10-04 21:53:48 +08:00
@pop123zxc 兄弟 搜不到啊
scriptB0y
2017-10-04 21:59:32 +08:00
做过一次 感觉轮子没啥用处…… 看不懂文档很多地方还是迷迷糊糊的,要给公账号设置一堆东西,文档不看这些东西就混了,文档能看明白 SDK 也没啥用了。

所以还是老老实实看文档,虽然文档确实屎一样…… 静下心来慢慢看
moooooo
2017-10-04 22:37:01 +08:00
你要的可能是一个单点登录系统...
moooooo
2017-10-04 22:41:44 +08:00
@moooooo 或者只是在微信客户端中打开你的网页,微信客户端打开的网页需要指明授权级别,基础授权和用户信息授权。
其中 用户信息授权会弹出一个是否信任该网页(类似的意思),选择了是那么你就可以使用微信给你的该账号与你的公众号绑定生成的 openId 你可以依据这个 openId + 应用 Token+AppId 可以获得用户的一些基本信息,包括但不限于微信头像和微信昵称等
chengxiao
2017-10-04 22:43:11 +08:00
@scriptB0y 对的,就是文档迷迷糊糊的....好多地方摸不着头脑 公众号后面也要设置很多东西....另外这个该如何在本地调试呢?我看回调函数都要从固定域名发起.....
scriptB0y
2017-10-04 22:50:53 +08:00
@chengxiao 我是在 vps 上开发的…… 看有的人好像是申请两个微信号,一个测试用,设置 host,本地通过域名访问
loveCoding
2017-10-05 00:00:50 +08:00
先把逻辑理清楚 , 所谓微信登录其实只是借助微信验证用户合法性 主要流程如下:
网站->微信登录->成功->发放登录凭证(session/token)
loveCoding
2017-10-05 00:03:12 +08:00
@chengxiao #11 反向代理 , 本地起一个 ngrok 或者 huashengke
bfbd
2017-10-06 09:52:32 +08:00
这儿有现成的:
https://github.com/aiportal/wechat-proxy

你所要做的仅仅是把用户的请求跳转到:/app/test/auth?call=...&state=&lang=
call 参数就是你最终接收用户 openid 的网址。
chengxiao
2017-10-06 11:20:20 +08:00
@bfbd 非常感谢,研究了一天终于搞明白了,在回调域名那坑了 3 个多小时,最后还是搞出来了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/395406

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX