iPhone 应用程序的 Facebook 访问令牌服务器端验证


我正在开发基于与服务器通信的 iPhone 应用程序,我想使用 Facebook 身份验证机制.

I'm developing iPhone application, that is based on communication with server, and I want to use Facebook authentication mechanisms.


Basically, I think it should work like this:

  1. 在我的 iPhone 应用中,用户使用他的电子邮件和密码登录 Facebook.
  2. 用户允许访问其相关 Facebook 应用程序的数据.
  3. 成功登录后,我的 iPhone 应用收到访问令牌.
  4. 为了与我的服务器进一步通信,我的 iPhone 应用程序应该使用收到的 Facebook 访问令牌(例如:在查询中).
  5. 当我的服务器从 iPhone 应用收到一些带有访问令牌的查询时,它应该询问 Facebook 该令牌是否有效(以及适用于谁),如果是,服务器应假定用户已通过 Facebook 进行身份验证.

我的问题是:如果给定的访问令牌有效,服务器应该如何询问 Facebook?我想我应该以某种方式检查令牌是否对我的 Facebook 应用有效.

My question is: how the server should ask Facebook if given access token is valid? I think I should somehow check if the token is valid for my Facebook app.

我已经尝试了许多 Facebook 查询来绘制 API,我发现这些查询都没有按我的预期工作.你能给我举个例子吗?

I've tried many Facebook queries to graph API, that I've found, but nothing worked as I expected. Can you provide me some example?


Here's a two step process you can use to validate that a user access token belongs to your App:

1) 生成应用访问令牌



2) 调试用户访问令牌



其中 INPUT_TOKEN 是您要验证的用户访问令牌,ACCESS_TOKEN 是您从第 1 步获得的应用令牌.

Where INPUT_TOKEN is the user access token you want to verify, and ACCESS_TOKEN is your app's token that you got from step 1.


The debug endpoint basically dumps all information about a token, so it'll respond with something like this:

    data: {
        app_id: YOUR_APP_ID,
        is_valid: true,
        metadata: {
            sso: "iphone-safari"
        application: YOUR_APP_NAMESPACE,
        user_id: USER_ID,
        issued_at: 1366236791,
        expires_at: 1371420791,
        scopes: [ ]


If that token isn't from "your app" then it will return an error response.