11

我正在为 OS X 构建一个小型 Facebook 登录库。这不是因为那里没有 SDK,而是因为我想要 Cocoa 原生的可以封装登录过程的东西。我已成功从 Facebook 登录 URL 请求访问令牌。我使用这种字符串格式来执行登录:

https://www.facebook.com/dialog/oauth?client_id=%@&redirect_uri=%@&response_type=token

对于我根据 Facebook 文档redirect_uri传递的字段。https://www.facebook.com/connect/login_success.html我接受任何响应并解析 URL。我要么得到一个令牌,要么失败。令牌似乎恢复正常。麻烦在下一步。

收到我的令牌后,我立即尝试验证它。我使用“调试”端点,如下所示:

https://graph.facebook.com/debug_token?input_token=%@&access_token=%@

我将我的新令牌作为 the 传递input_token,这就是它变得粘稠的地方。我尝试传递我的客户端令牌,但这会导致以下错误:

操作无法完成。(无效的 OAuth 访问令牌。错误 190。)`

如果我通过 my app ID | app secret,我会得到一个不同的错误:

操作无法完成。((#100)您必须提供应用访问令牌或用户访问令牌,该令牌是应用错误 100 的所有者或开发者。)

我不确定这里发生了什么,或者该做什么。谁能指出我正确的方向?

4

1 回答 1

18

如果您想以应用程序而不是用户的身份进行操作,则调试 API适用的用户登录后,您只需要他们的访问令牌来获取有关他们的信息、阅读他们的信息、发布内容(当然,假设您有一个访问令牌,该访问令牌有权执行您想做的事情)。因此,在您的情况下,既然您拥有访问令牌,请继续尝试获取有关使用的用户的信息

https://graph.facebook.com/me?access_token=%@

你会得到这样的东西:

{
   "id": "542440888",
   "name": "Max Rabin",
   "first_name": "Max",
   "last_name": "Rabin",
   "link": "https://www.facebook.com/MY_USER_NAME",
   "username": "MY_USER_NAME",
   "birthday": "11/22/YEAR",
   "hometown": {
      "id": "110970792260960",
      "name": "Los Angeles, California"
   },
   "location": {
      "id": "110970792260960",
      "name": "Los Angeles, California"
   },
   "bio": "There are 10 kinds of people in this world.\r\n01: Those who know trinary\r\n02: Those who don't\r\n10: Those who confuse it with binary",
   "gender": "male",
   "email": "MY_EMAIL",
   "timezone": 2,
   "locale": "en_US",
   "languages": [
      {
         "id": "106059522759137",
         "name": "English"
      }
   ],
   "verified": true,
   "updated_time": "2013-10-21T10:02:49+0000"
}
于 2013-10-30T20:23:18.213 回答