实现微信公众号自动登陆自己的Web App

测试:

基本的思路是通过公众号OAuth API获取用户微信的openid。第一次使用的时候让用户登录,然后在数据库里把openid和自己应用的userid对应起来。以后获得用户的openid之后就可以自动登录到对应的用户上。

登录流程图如下:

其中和微信有关的操作就是第二行和第三行。

微信的OAuth认证方式是,让用户在微信客户端里打开这样一个地址https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE,微信认证服务器会引导用户跳转到你指定的REDIRECT_URI,并且在该URL后面加上一个CODE参数。

例如,想在http://example.com/redirect.php?type=post页面获得用户的信息,就在页面内使用isset$_GET[‘code’])判断是否存在code参数。

如果不存在,就让用户访问https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3a%2f%2fexample.com%2fredirect.php%3ftype%3dpost&response_type=code&scope=snsapi_base&state=STATE。(注意把url作为参数时要经过UrlEncode)

微信服务器会把用户重定向到http://example.com/redirect.php?type=post&code=CODE。开发者就可以从url参数中获得CODE了。

然后开发者就可以拿着这个CODE,去https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code换取用户的openid。

拿到openid之后就可以判断用户是否绑定过,并进行下一步操作了。

如果需要用户的昵称、头像等更多信息,需要将第一个url中的scope参数改为snsapi_userinfo,详细信息可以看微信的开发文档。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注