V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leefly
V2EX  ›  程序员

前端段分离项目 微信授权登录问题

  •  
  •   leefly · 2016-06-21 19:14:57 +08:00 · 12406 次点击
    这是一个创建于 3063 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如何获取用户信息以及配置信息
    12 条回复    2016-10-01 11:19:27 +08:00
    chineselittleboy
        1
    chineselittleboy  
       2016-06-21 19:28:41 +08:00 via Android
    用户信息文档里有接口 配置信息什么鬼
    momou
        2
    momou  
       2016-06-21 20:02:35 +08:00
    后台获取后传给前端,微信授权后有一个跳转地址,你在这个页面获取就可以了
    XianZaiZhuCe
        3
    XianZaiZhuCe  
       2016-06-21 20:04:47 +08:00 via iPhone
    微信文档写的很清楚哦
    cloverstd
        4
    cloverstd  
       2016-06-21 21:14:00 +08:00   ❤️ 2
    如果你是 SPA ,并且 index.html 给后端托管的话,由后端进行微信微信的 OAuth 认证,然后生成 token 写入 index.html 里,然后 JavaScript 再通过 token 获取用户信息

    如果你的 index.html 没有后端托管,那么每个 API 请求,都由后端来判断是否 OAuth 认证的,可以依赖于 session ( cookie ),这样最简单,然后前后端定好规则,比如后端返回 code 为 2 时表示要微信认证,并且 data 里包含认证的 URL (也可以直接是微信 OAuth 的地址),然后回调到后端某个地址(设好 cookie ),再 redirect 到 index.html 这个地址上来
    wakiki
        5
    wakiki  
       2016-06-21 21:56:53 +08:00 via Android
    做过 qq ,微博,微信的授权登录, modal 里嵌 iframe 看起来挺 nice 的,登录完后端的管理页面给前端页面跨站 postMessage, 就微信事多把父窗口也要跳转
    ayaseangle
        6
    ayaseangle  
       2016-06-22 01:10:58 +08:00
    感觉可以使用 jssdk 了。。
    66beta
        7
    66beta  
       2016-06-22 08:21:09 +08:00
    jssdk ,后端出接口给你签名信息
    zkm890520
        8
    zkm890520  
       2016-09-30 23:30:39 +08:00
    @cloverstd 刚好遇到这个问题,兄台,我还是不理解你说的怎么做.... 我这边前端使用 vue.js,后端使用 php 的 laravel,按照你说的我也是 SPA 且 index.html 也没有给后端托管. 但是我想的是前端检测 localstore 有没有相信的 wechat_user 信息且没过期,不符合我就请求后端,然后后端就发给前端一个微信网站授权认证地址,接着前端就转到那个授权页面,回调地址写 后端 的.这时候认证完我怎么把后端认证完的 wechat_user 丢给前端.
    因为问题就是我已经从前端对应的网址跳到微信服务器对应的授权网址再到后端地址,已经不知道前端谁是谁了
    cloverstd
        9
    cloverstd  
       2016-09-30 23:37:19 +08:00
    @zkm890520
    假如你的前端是 http://hui.lu/1.html
    然后你的微信回调是 http://hui.lu/callback
    然后你拼接到微信的地址是 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http://hui.lu/callback&response_type=code&scope=SCOPE&state=1#wechat_redirect

    注意其中的 state=1 微信回调时会带上这个,你可以通过这个知道你的前端是 1.html
    zkm890520
        10
    zkm890520  
       2016-10-01 00:25:22 +08:00
    @cloverstd 我说的前端不知道是谁,是指我从 前端.域名.com(localstore 没任何 wechat 的数据,在这里充当 session 的作用),向后端.域名.com/article/list 请求数据. 但是突然发现没有用户信息.
    我就只能去从前端向后端发起一个需要微信授权认证的请求. 后端就告诉我网址 -> https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http://hui.lu/callback&response_type=code&scope=SCOPE&state=1#wechat_redirect ,但是这个时候我的前端页面不就会跳到微信的授权页面么.接着再跳到那个 http://hui.lu/callback 授权认证地址. 经过一系列步骤后,我的后端得到了 openid....
    但是这个时候,因为我是前后端分离,也就是说我的前端不是 php 街西城 html 的,或者说前后端的网址可以是这样
    前端: front.xxxx.com
    后端: api.xxxx.com
    我就不知道通过什么方法将我的道德 openid 交给前端.
    是直接 front.xxxx.com?openid=myopenid...给么
    cloverstd
        11
    cloverstd  
       2016-10-01 07:26:59 +08:00 via iPhone
    @zkm890520 后端放 cookie 呀
    你前端不用知道是谁,前端只用发请求,你的后端根据 cookie 判断 openid ,然后再给对应的信息
    zkm890520
        12
    zkm890520  
       2016-10-01 11:19:27 +08:00 via Android
    @cloverstd 哦哦!知道了,多谢兄台,国庆快乐
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2772 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:05 · PVG 17:05 · LAX 01:05 · JFK 04:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.