问题标签 [facebook-oauth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
17553 浏览

facebook - 如何使用 Facebook 登录创建网页并获取访问令牌?

我想建立一个网站,让 facebook 用户登录,然后显示他们朋友的个人资料图片。

有很多资源要查找,Javascript SDK、PHP SDK、OAuth 2.0,我只是对如何以简单的方式实现我的应用程序感到困惑。

我想这样做:

  1. 用户在我的网站上登录 Facebook。(使用社交插件创建登录页面?还是什么?)
  2. 成功登录后,获取用户的访问令牌。
  3. 使用 https://graph.facebook.com/userid/friends?access_token= ... 获取用户好友的 ID
  4. 使用https://graph.facebook.com/userid/picture 获取图片然后显示。

谁能告诉我有可能以这种方式实现吗?希望你能给出一些指定的代码,尤其是在步骤(1)和(2)中。

非常感谢!!!

0 投票
3 回答
14074 浏览

authentication - 访问令牌可以超过 255 个字符吗?

当允许通过 OAuth(例如 OpenID、Facebook、Twitter 等)登录时,我们将 Oath 提供者提供的访问令牌保存在 mysql 数据库中以供将来验证。在某些教程中,保存访问令牌的列是varchar(255),有些使用text. 我想知道访问令牌(通过 facebook 和 twitter 等常见网站)是否超过 255 个字符需要text列。我们应该考虑这种可能性吗?

0 投票
1 回答
5051 浏览

ruby-on-rails-3 - Facebook 身份验证对话框(JS SDK)返回空白屏幕

我正在设置一个 Rails 应用程序并尝试通过 Facebook JS SDK 实现登录。已经缺少 Omniauth ... :(

无论如何,发生的情况是弹出对话框,用户提供登录信息,但随后重定向到https://www.facebook.com/connect/window_comm.php?_id=some-string&_relation=opener&auth_token=some-big-string空白屏幕。弹出窗口没有关闭。

但是,如果我手动关闭它,然后刷新我的页面,我可以看到登录发生了。

奇怪的是,在第一次登录时,当请求权限时,一切都按预期工作,在授予或拒绝权限后弹出窗口关闭。

在 Chrome、FF、Safari 和 Opera 上测试。一致的行为。

如果我在 Chrome 上调试空白重定向页面,则会出现两个错误:

1)Unsafe JavaScript attempt to access frame with URL http://something from frame with URL https://something. Domains, protocols and ports must match.(注意http x https ...)

2)window_comm.php:7Uncaught TypeError: Cannot call method '_recv' of undefined

以下是相关代码:

非常感谢您对此的任何了解……让我发疯!=(

编辑:这可能是 Facebook 上的错误,因为它是从 http 重定向到 https 吗?

0 投票
1 回答
2697 浏览

facebook - 在身份验证对话框中登录和取消

所以我有一个 facebook 画布页面,其中包含一些信息和按钮http://www.facebook.com/theminespress?sk=app_289102104446763

第一个问题是......当用户点击应用程序链接时,他们会被带到登录页面:

http://www.facebook.com/connect/uiserver.php?app_id=287405277948067&method=permissions.request&redirect_uri=http%3A%2F%2Fapps.facebook.com%2Fchocolate_sender%2F&response_type=none&display=page&perms=publish_stream&auth_referral=1

即使他们已经登录?如何让他们直接进入身份验证对话框以获得扩展权限?

其次,如果用户在扩展权限屏幕上选择“不允许”,他们仍然会被带入应用程序吗?我没有看到它去:

http://YOUR_URL?error_reason=user_denied& error=access_denied&error_description=The+user+denied+your+request

如 (http://developers.facebook.com/docs/authentication/) 中所述。

我究竟做错了什么?请帮忙。

0 投票
2 回答
754 浏览

ruby-on-rails - 当我尝试使用 omniauth 通过 Facebook 进行身份验证时出错

我关注了 Ryan Bates Omniauth Part1 railscats http://railscasts.com/episodes/235-omniauth-part-1。我将 twitter 和 Facebook 身份验证与他们的密码一起使用,当我尝试通过 Facebook (auth/facebook) 进行身份验证时,我收到此错误:

当我尝试通过 twitter (auth/twitter) 进行身份验证时,我收到了 401 Unauthorized 响应。我不知道我该如何纠正它

谢谢我更正http://127.0.0.1:3000了在 twitter URL 回调字段和 facebook 我的网站字段中的输入。但是现在当我尝试使用 facebook 进行身份验证时,我收到了这个错误:

OpenSSL::SSL::SSLError

SSL_connect 返回=1 errno=0 state=SSLv3 读取服务器证书B:证书验证失败

我该如何解决?我解决了放入OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONEdevelopment.rb

0 投票
4 回答
27657 浏览

facebook - 从用户访问令牌获取应用程序 ID(或验证源应用程序的令牌)

我找到了这个问题,它有一个答案,但 facebook 从那时起改变了令牌格式,现在它是这样的:

简而言之,你无法从中推断出任何东西。我还找到了access token debugger,如果您将令牌粘贴进去,它会显示我正在寻找的信息,这很好,但不能帮助我以编程方式进行操作。

关键是,如果有人为用户获取令牌,他可以使用它来访问图表,这就是我在我的应用程序中所做的 - 我想确保人们正在转发我的应用程序颁发给他们的令牌,而不是另一个。

我的申请流程是:

  1. 从 facebook 获取访问令牌(没什么特别的,按照此处描述的方式,服务器端流程。(也使用 iPhone 和 android,但如果我没记错的话,它们有类似的流程))
    [设备] <-> [facebook ]
  2. 使用该访问令牌,设备将使用令牌
    [device] <-> [Jonathan's application]
    在我的服务器上访问我的应用程序服务器,我将访问令牌附加到用户并使用它在我的应用程序中向该用户授予权限。(使用 facebook 连接对用户进行身份验证)


我的应用程序是安全的,并且无论facebook如何,完成的访问都经过身份验证,但是!在这个流程中,我发现的一个薄弱环节是我无法确定我获得的访问令牌是为我的应用程序签名的 - 我不喜欢它,因为我缓存令牌以供离线使用,我希望 100% 确定它们适用于我的应用程序,具有我的权限。

那么验证我获得的令牌与我的应用程序相关的(最佳)方法是什么(对于与用户的关系,我使用令牌访问 /me 并查看该令牌用于哪个用户)

我不需要解密令牌(我猜它是某种 AES),我只是在寻找一个端点,它会告诉我令牌与我的应用程序 ID 匹配。

(编辑:使用 C# SDK,如果重要的话。但是提供该信息的图形/休息调用也一样好:))

0 投票
1 回答
825 浏览

facebook - 需要生成 OAuth 令牌才能打开对话框

我真的在为整个 OAuth 事情苦苦挣扎。我有一个要弹出的链接,打开一个对话框,将消息发布到用户的墙上。这是我的代码...

当我单击链接时,它会生成此错误...

我如何获得这个访问令牌,获得它后我需要用它做什么吗?Facebook 文档真的让我很生气。它为您提供的示例代码只完成了 IMO 所需的一半。

我正在使用 PHP SDK。

0 投票
0 回答
639 浏览

facebook-graph-api - 如何在 iOS 上通过 Facebook Score API 正确使用应用和用户令牌

我正在尝试在 iOS 中向 Facebook Graph API 发布高分,但没有运气通过所有令牌内容。我已经修改了 iOS 库以存储应用令牌和用户令牌,并在发布到 时交换了应用令牌https://graph.facebook.com/{my user id}/scores,但我不断收到关于需要用户令牌的错误消息。当我交换用户令牌时,它告诉我我需要一个应用程序令牌。

我认为这可能类似于用户令牌在请求完成之前被切换回,但我已经两次和三次检查请求是否以我收到的应用程序令牌作为access_token发布值返回。根据我一直在做的调试,我需要一个用户访问令牌和一个应用程序访问令牌。

*调用 oauth/access_token 后*

使用用户访问令牌“(#15)必须使用应用程序访问令牌调用此方法。”

使用 APP ACCESS TOKEN “请求此资源需要用户访问令牌。”

我也使用 publish_actions 作为许可。

0 投票
2 回答
5138 浏览

python - 如何在服务器端完全启用 Facebook OAuth 2.0?

我基本上想保存给定用户的 Facebook ID,以便我可以通过 Facebook 接收更多材料。理想情况下,我想要一个既不使用 javascript 也不使用 cookie 的解决方案,仅使用服务器端,但没有示例,只有说明,所以我整理了一个我们可以讨论的解决方案。当我将用户链接到我的网站的 OAuth 对话框时,我认为这是我认为有效的代码:

https://www.facebook.com/dialog/oauth?client_id=164355773607006&redirect_uri=http://www.kewlbusiness.com/oauth

然后我像这样处理它来获取用户数据:

因此,有了这个,我可以为我的网站“使用 Facebook 登录”,而无需使用很多我们不想要的凌乱的 javascript 和 cookie。我想为我的网站启用“使用 Facebook 登录”。它应该在没有 cookie 和 javascript 的情况下工作,但他们试图让你做的第一件事是 Javascript 和 cookie。因此,我制定了一个似乎无需 cookie 和 javascript 即可工作的解决方案,只需 OAuth 2.0:您能谈谈我的“解决方案”吗?我正在寻找的实际用途是启用简单的功能,FB 用户在我的网站上做了什么,并允许 Facebook 帐户以标准化的方式登录。

我只是认为它必须在没有 javascript SDK 和没有 cookie 的情况下工作,似乎就是这样。你能告诉我这个“解决方案”的优点和缺点是什么吗?我认为它比 Javascript + Cookie 要好得多,那么当最小的示例似乎是 100% 服务器端时,为什么他们会欺骗我们使用 javascript 和 cookie?

谢谢

更新 看起来正确并且行为正确,我还可以将用户数据与数据存储一起使用,并将我的 FB 名称呈现到首页,无需 javascript 和 cookie,只需 python:

拥有 facebook 用户的变量 fbuser 和 google 用户的变量 user 现在承认我可以将 facebook 用于我的网站,而没有错误、混乱、不必要的 javascript + cookie。

现在我可以从我的网站渲染和查看我的 facebook 名称,这很棒,它最终以它应该独立于 javascript 并且不需要 cookie 的方式工作。

当服务器端 OAuth 2.0 是最干净的解决方案时,为什么文档推荐 javascript + cookie?您是否同意这是最好的解决方案,因为它不依赖于您使用 javascript 还是 cookie?

更新 当我现在看到其他人无法使用服务器代码注销时,可能出现重复的问题,他们不得不求助于 Javascript SDK,并且要求它必须并且应该在没有 javascript 的情况下工作,所以我做了一些调试并发现“清除” cookie,我不得不更改 cookie 的名称,虽然它有效,但我希望得到您的评论和/或测试您认为我的项目如何解决这个问题。像这样的注销链接应该可以工作,但不能。如果我注销两次它可以工作,这就是为什么这是一个奇怪的错误,因为我可以修复它,但我仍然不知道是什么让注销需要第二次点击:

https://www.facebook.com/logout.php?next=http://www.myappengineproject.com&access_token=AAACVewZBArF4BACUDwnDap5OrQQ5dx0jsHEKPJkIJJ8GdXlYdni5K50xKw6s8BSIDZCpKBtVWF9maHMoJeF9ZCRRYM1zgZD

看起来我并不是唯一一个试图完全避免使用 javascript 来使用 OAuth 2.0 服务器端的解决方案的人。人们可以做任何事情,但他们无法注销:

Facebook Oauth 注销

OAuth 2.0 with Facebook 的官方文档说:

您可以通过将用户定向到以下 URL 来将用户从他们的 Facebook 会话中注销:

https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN

YOUR_URL 必须是您的站点域中的 URL,如开发人员应用程序中所定义。

我想在服务器端做所有事情,我发现建议的链接方式留下了 cookie,因此注销链接不起作用: https://www.facebook.com/logout.php?next=http://{{host}}&access_token={{current_user.access_token}} 它确实重定向但它不会记录我网站的用户。这似乎是一个 Heisenbug,因为这对我来说正在改变并且没有太多文档。无论如何,我似乎能够使用操纵 cookie 的处理程序来实现该功能,从而实际上用户已注销:

因此,将处理程序映射到 /auth/logout 并将其设置为链接可以有效地将用户从我的网站中注销(而不是将用户从 facebook 中注销,希望并且未经测试)

我的代码的其他一些部分正在处理 OAuth 令牌和用于 Oauth 通信的 cookie 查找:

我没有创建登录处理程序,因为登录基本上是我的根请求处理程序中的代码。我的用户类如下:

我一起模拟了两个基本的提供者 在此处输入图像描述 ,我为 facebook 用户使用变量 current_user,为 google 用户使用变量 user,为正在登录的用户使用变量 fbuser,因此没有 cookie 匹配。

我使用的 cookie 查找代码如下,我想我理解它并且它可以满足我的需求:

我不得不学习 cookie 来解决这个问题,我希望你能发表更多评论。输出欢迎消息需要 3 个变量,一个用于 google 用户,一个用于登录的 facebook 用户,以及用于答案中提到的案例的变量 fbuser:

当您尝试对新用户进行身份验证时,将使用 JavaScript/Cookie。这在您的数据库中不存在,并且您没有他的 accessToken。

所以我不得不使用 3 个变量,也许你可以只使用 2 个变量?

0 投票
1 回答
4269 浏览

facebook-graph-api - 使用 facebook graph api 访问测试用户数据

我正在尝试使用 facebook graph api 获取测试用户的朋友,但它只返回朋友的 id,而不返回其他详细信息,如 first_name、last_name 等。这适用于真实用户。我专门传递了我需要的字段(请求看起来像这样):

访问令牌是测试用户登录我的应用程序时授予测试用户的令牌。

我找到了类似的 SO 帖子,但我不确定建议的解决方案是什么。

通过 Facebook Graph API 查询测试用户