【问题标题】:How can I validate an access token from PHP when it was generated from a mobile app?当从移动应用程序生成访问令牌时,如何验证来自 PHP 的访问令牌?
【发布时间】:2013-01-17 22:01:17
【问题描述】:

我正在编写一个 Android 应用程序,我想通过 Facebook 进行身份验证,然后在与 Facebook 建立会话后联系我自己的 Web 服务器。我的网络服务器仅通过 JSON 与 Android 应用程序通信,因此我无法重定向网页以让用户登录。

我可以将访问令牌和用户 ID 从 Facebook 发送到 Web 服务器,但我需要一种验证输入的方法。

我查看了其他一些线程(即thisthis),看起来有多种方法可以将用户的登录状态传达给远程Web 服务器。

这里哪种方法是标准的?有什么我应该注意的取舍吗?

  1. $Facebook->getUser() 将为我提供当前请求页面的用户 ID(如果网页未通过身份验证,但移动应用通过了身份验证,这是否有效?)
  2. $Facebook->getAccessToken() 会给我登录用户的会话密钥(与 1 中的问题相同)
  3. 只要有人登录,$Facebook->api('/me') 就不会返回 null

【问题讨论】:

  • 我不明白这句话的意义:“我的网络服务器仅通过 JSON 与 Android 应用程序通信,因此我无法在我的网络服务器代码中嵌入 iframe”我>。无论如何,为什么您的应用程序不能只使用POST 访问服务器的访问令牌以及用户 ID?
  • @Madbreaks,假设我这样做,那如何安全?服务器不应该向 Facebook 验证访问令牌/用户 ID 是否有效吗?
  • 我想我不明白你的问题。在我看来,您想通过您的应用(而不是直接应用 Facebook)向 Facebook 验证用户,对吗?
  • 用户在 Android 设备上登录我的应用程序。我的应用程序的网络服务器托管了一些 Facebook 上不可用的内容,因此 Android 应用程序也必须能够联系网络服务器。我需要一种方法让 Android 应用程序通知网络服务器用户有一个有效的 Facebook 会话。
  • 您的用户如何通过 Facebook 进行身份验证?

标签: php android facebook authentication


【解决方案1】:

只需通过 HTTPS 连接将访问令牌发送到您的服务器,您就可以通过调用 /me/app 来验证它,以验证应用和用户 ID 是否都符合您的预期

另请参阅访问令牌调试端点:https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/

【讨论】:

  • 所以服务器不必以任何人身份登录来验证 /me 和 /app?
  • 访问令牌是您用来“登录” API 的工具 - 文档中的登录流程是登录 (Facebook) 用户如何为您的应用提供访问令牌以对其执行操作代表他们
猜你喜欢
  • 2015-09-27
  • 2021-04-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 2013-12-09
  • 2013-01-10
相关资源
最近更新 更多