【发布时间】:2017-02-01 19:04:39
【问题描述】:
我正在为我的 Angular2 网络应用程序设置 Facebook 注册。 一旦应用程序通过 Facebook 接受(在被重定向到 Facebook 授权页面之后),它就会重定向到我的 webapp,并将令牌和代码作为 url 参数:
http://localhost:55976/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
但是一旦页面被加载,参数就会被删除。网址变成:
http://localhost:55976/
如何在参数(access_token 和代码)被删除之前提取它们? 我的路由配置包含:
{ path: 'login', component: LoginComponent },
{ path: 'login/:access_token/:code', component: LoginComponent },
编辑:
这是我在 login.component 中重定向到 facebook 的方式: html:
<a class="btn btn-social btn-facebook socialaccount_provider facebook" title="Facebook" href="#" (click)="login_facebook()">
<span class="fa fa-facebook"></span> <span style="padding-left:25px">Sign in with Facebook</span>
</a>
打字稿:
login_facebook() {
let url = 'https://www.facebook.com/dialog/oauth?'+
'client_id=my_client_id' +
'&redirect_uri=' + encodeURIComponent('http://localhost:55976/#/login/') +
'&response_type=code%20token';
console.log(url);
window.location.href = url;
}
facebook api 重定向到http://localhost:55976/#/login/,这是我尝试获取 access_token 和代码参数的地方。
编辑 2:
如果我删除重定向 url 中的尖角,facebook 会将我重定向到正确的 URL,但没有尖角,角度无法解析 url。
在删除“#”之前:
redirect_uri: http://localhost:55976/#/login/
facebook return: http://localhost:55976/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
删除“#”后:
redirect_uri: http://localhost:55976/login/
facebook return: http://localhost:55976/login/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
这意味着问题来自尖锐。但如果没有尖锐的角度,则会返回 HTTP 错误 404.0 - Not Found。
【问题讨论】:
标签: url angular parameters routing