【问题标题】:How to get facebook user access token without using sdk?如何在不使用 sdk 的情况下获取 facebook 用户访问令牌?
【发布时间】:2018-03-13 15:33:18
【问题描述】:

我正在尝试使用登录对话框而不使用 Javascript SDK 获取 facebook 用户访问令牌。

fetch(`https://www.facebook.com/v2.12/dialog/oauth?
client_id=APP_ID
&redirect_uri=https://www.facebook.com/connect/login_success.html
&scope=manage_pages,publish_pages
&response_type=token`, {
mode: 'no-cors',
});

它重定向到https://www.facebook.com/login.php 并具有cancel_url 参数:

cancel_url: "https://www.facebook.com/connect/login_success.html?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied#_=_"

但我没有取消登录,根本没有登录窗口。 为什么会发生此错误以及如何解决?

【问题讨论】:

  • 您不能只对登录对话框进行 ajax 调用...您到底想达到什么目的?为什么不直接使用官方 sdk 和 FB.login 或者登录按钮?
  • @luschn 我只需要获取用户访问令牌。不想包含有很多东西的sdk。那么没有sdk就不行了?
  • 当然有可能,看我的回答

标签: javascript facebook-login facebook-access-token


【解决方案1】:

https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#login

您的应用必须启动重定向到将显示登录对话框的端点...

您必须重定向到该 URL,而不是尝试将其与 AJAX 调用一起使用。另外,请确保您使用的是有效的 App ID (client_id=APP_ID)。

【讨论】:

  • 重定向后如何获取位置响应标头?它包含令牌
  • 你是说,片段?这方面有很多教程,例如:stackoverflow.com/questions/29934606/…
  • 另外,请查看我的答案中的链接并搜索“处理登录对话框响应”。如果你真的想实现手动登录,我建议你阅读整个页面。
  • 不,不是解析,我的意思是我需要在重定向后获取响应标头。我使用 window.location.href。
  • 没错,看看我回答中的链接,它解释了如何处理响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 2011-09-19
相关资源
最近更新 更多