微信内网页登录微信



用户通过微信客户端访问你的网页, 通过授权机制获取用户基本信息,实现登录
这里首先要确定的是你只是想得到用户的openid, 还是想得到用户的基本信息比如:昵称和头像等。

我的建议所以,首先自动获取openid, 因为获取openid不需要用户授权操作,也就是用户不知道的情况下就获取了openid,
然后第二步,再申请获取用户头像昵称,获得用户信息。万一用户拒绝,我们也可以分辨出当前是哪个用户。
那么主要就是2步骤:

1. snsapi_base  获取open_id,
2. snsapi_userinfo ,获取
  2.1. 网页授权access_token
 

具体步骤:
第一步
1. 拼接一个 url ,比如:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{appid}&redirect_uri=#{return_uri}&response_type=code&scope=#{scope}&state=#{siteid}_#{ref_url}_#{current_user.id}&component_appid=#{com_appid}#wechat_redirect"
appid = 这是我的公众号的appid
return_uri = 返回给第三方开发者的地址,这个第三方开发者,也是自助开发的。return_uri = CGI.escape("https://weapp.peicheche.com/appid/#{appid}/callback")  
scope = snsapi_base, 先获取open_id
state = 这里的信息是要回传给 我的网页的。  
       #siteid-refurl-current_user.id  三部分组成,第一部分是子站点id,第二部分是登录成功后返回url(路径/替换成-),第三部分是当前用户id
com_appid = 第三方开发者的appid,也就是服务商的appid,相当是微信平台里面的服务商。


2. 通过我的网页服务器,redirect_to 上面的url.   然后微信会返回到你指定的地址:weapp.peicheche.com/appid/.../callback,  同时会带上一些数据给你。
 这里要注意的是如果用的是 snsapi_base, 微信就直接返回,如果是snsapi_userinfo 微信会返回一个授权界面。确认后才会返回,
返回地址:
redirect_uri/?code=CODE&state=STATE。

code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。



里面的返回url指向设置的   
阅读量: 422
发布于:
修改于: