Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

前后端分离单页下获取的config,认证失败 #565

Closed
xiao345 opened this issue Jan 10, 2017 · 7 comments
Closed

前后端分离单页下获取的config,认证失败 #565

xiao345 opened this issue Jan 10, 2017 · 7 comments

Comments

@xiao345
Copy link

xiao345 commented Jan 10, 2017

我用的环境

PHP 版本:7.1
overtrue/wechat 版本:laravel 5.2

问题及现象

我的应用用vue做前端开发,后端提供api接口调用,在做微信分享功能时,我设置了一个接口来生成config,但这样获取的config是认证不了的

$options = config('wechat');
$app = new Application($options);
$arr = [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo
];
$js = $app->js->config($arr);
return $js

我排查了之后,觉得可能是请求路径的问题,如果用laravel服务器端渲染的话,请求路径就是当前页,但单页应用就不一样了 ,有没有什么好的解决方案?

@overtrue
Copy link
Collaborator

微信里还是少这样玩吧,我也没有什么好的建议

@tianyong90
Copy link
Contributor

@xiao345 对于你上面的代码,$app->js 下还有一个 setUrl 方法,可以在调用 config 方法生成配置之前用它手动设置 url,至于 url 的值,对于 vue 单页应用一般就是入口地址了,当然,如果使用 vue-router 的 history 模式,情况可能不一样……

@elinxer
Copy link

elinxer commented Mar 23, 2018

我也遇到这个问题,求解啊,setUrl为前端路由一样出问题 @tianyong90

@tianyong90
Copy link
Contributor

最好贴下你的相关代码或者说明使用情况以及具体错误。@elinxer

@lyt8384
Copy link
Contributor

lyt8384 commented Mar 23, 2018

其实我们也是单页面应用的。这个趋势还是有的。。我们的解决方式是自己写了config方法。。Vue在完成渲染后,发起请求给后端,包含当前URL。。然后后端根据这个URL再去生成微信的config参数。再配置。

@elinxer
Copy link

elinxer commented Mar 23, 2018

确实找到了方法: 请求config配置参数,生成签名时要使用完整的URL去生成签名,已修复,谢谢各位

@shaoless
Copy link

shaoless commented Jun 7, 2018

请教一下完整的url是指什么,微信建议是encodeURIComponent(location.href.split('#')[0]),这样有什么问题吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants