无法验证Facebook令牌

Mos*_*she 5 cocoa facebook-graph-api facebook-login

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

https://www.facebook.com/dialog/oauth?client_id=%@&redirect_uri=%@&response_type=token
Run Code Online (Sandbox Code Playgroud)

对于redirect_urihttps://www.facebook.com/connect/login_success.html根据Facebook文档传递的字段.我接受任何响应并解析URL.我会得到一个令牌或失败.令牌好像回来了.问题出在下一步.

收到我的令牌后,我立即尝试验证它.我使用"debug"端点,如下所示:

https://graph.facebook.com/debug_token?input_token=%@&access_token=%@
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

Max*_*Max 13

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

https://graph.facebook.com/me?access_token=%@
Run Code Online (Sandbox Code Playgroud)

你会得到这样的东西:

{
   "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"
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是一点安全隐患吗?有人可以从其他应用程序获得用户访问令牌,然后他可以将其发送到我们的服务器并以其他用户身份登录.还是我弄错了? (3认同)