微信为桌面网站提供了一个非常方便的QR-code login option(对不起,仅中文)。基本上,您只需使用微信扫描代码,然后单击确定,然后登录。
但是,我在为通过移动设备访问同一网站时如何实现相同功能而苦苦挣扎?
最佳答案
我处在同样的情况下,我一直从Google那里得到这个 Unresolved 问题,所以我将根据目前的情况尝试提供更多信息。
首先让我们澄清一下,我们正在谈论的是中国国家范围内的微信。与其他国家相比,中国的微信具有更多的功能。
基本上有3种方法可以在您的网站上使用微信登录:
现在让我们开始技术。
QR码登录
可以在QR Code login documentation用英语获得文档
我不会在这里解释这个问题,因为这并不是真正的问题。
只能通过移动网站使用OAuth 2.0 进行微信登录
[编辑] 看来我们不能直接在网站上使用来自微信的OAuth。仅当从微信移动应用程序中加载网站时才能执行此操作。请引用以下部分:“通过微信移动应用程序登录微信”
Documentation from qq.com使用Google Transalate应该可以为您提供基础知识。有3个主要步骤:
-步骤1:用户同意,访问代码
-步骤2:代码页以换取授权access_token
-步骤3:提取用户信息
这还假设您已根据需要的appid,作用域和状态正确设置了API访问权限
通过微信移动应用程序从微信登录到微信,通过移动应用程序通过微信登录
为了实现这种登录方式,您必须记住,网站需要在微信移动应用程序中加载。
我能找到的最简单方法是根据网站网址生成QR码,然后使用微信应用程序扫描QR码(可以选择使用移动应用程序进行扫描)。要生成QR码,您可以使用http://www.qr-code-generator.com中的在线工具
从微信应用程序浏览您的移动网站后,流程将是当用户转到您网站的登录页面时,您会将用户重定向到微信oauth网址。
有关此文档,请访问https://mp.weixin.qq.com/wiki?id=mp1421140842&highline=scope
网址将类似于:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
SCOPE可以是“nsapi_base”或“nsapi_userinfo”。 “nsapi_userinfo”将使您获得有关该用户的更多信息,但实际上微信并没有太多共享。他们将不会共享电子邮件或手机号码。
STATE只是您生成的随机字符串,允许您在页面重定向后在自动上升后对其进行匹配。
APPID是您的微信帐户中的应用程序api。如果您还没有APPID,则有2个可用选项。创建一个企业帐户(生产帐户)或创建一个沙箱帐户。
您可以在https://mp.weixin.qq.com上注册;
或对于测试沙箱帐户:
http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
(仅提供中文版本)
因此,将发生的情况是,当用户重定向到https://open.weixin.qq.com/connect/oauth2/authorize时,他们将不得不同意与您的移动网站共享其信息。一旦他们同意,用户将被重定向到您选择的URL。 (请参见redirect_uri = REDIRECT_URI参数)
然后你可以调用https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
获取用户信息。
ACCESS_TOKEN是使用APPID和SECRET并调用api生成的 token :https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=[APPID]&secret=[SECRET]
同样,如上所述,您注册到微信帐户后即可使用APPID和SECRET。
而且因为我们喜欢英语,所以http://admin.wechat.com/wiki/index.php似乎有一个可用的英语维基。
它不如中文版那么出色和完整,但它是一个更好地了解事物的开始。
获取用户信息后,您只需要在移动网站上实现类似以下内容的逻辑即可:
希望这将帮助一些迷失的微信开发人员尝试实现相同的功能。我也很高兴能从其他人那里获得帮助,以完成此答案。
谢谢你。