给定App ID和Secret如何获取FB访问令牌?

时间:2013-03-19 01:13:20

标签: java facebook restfb

我刚学习restfb。我在FB网站上注册了一个应用程序并获得了应用程序ID和密钥。但是,根据this tutorial,我应该有一个访问令牌来初始化DefaultFacebookClient。我尝试按照那里的说明进行操作,但没有充分说明如何从应用程序ID和密钥中获取访问令牌。

Request https://graph.facebook.com/oauth/authorize?client_id=MY_API_KEY&redirect_uri=http://www.facebook.com/connect/login_success.html

Facebook will redirect you to http://www.facebook.com/connect/login_success.html?code=MY_VERIFICATION_CODE

Request https://graph.facebook.com/oauth/access_token?client_id=MY_API_KEY& redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=MY_APP_SECRET&code=MY_VERIFICATION_CODE

Facebook will respond with access_token=MY_ACCESS_TOKEN

我确实做到了,但每次我都

{
   "error": {
      "message": "Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request",
      "type": "OAuthException",
      "code": 100
   }
}

知道我应该做些什么来获取访问令牌并开始使用API​​?

3 个答案:

答案 0 :(得分:3)

看起来插件作者假设您将使用Login DialogJavaScript SDK对用户进行身份验证。

这两种方法都会返回您可以使用的用户访问令牌。您需要App_ID和Secret来初始化这些。大多数Facebook操作都需要用户访问令牌。

如果您只是为了阅读公共数据而进行API调用,那么您可以使用应用程序访问令牌。为此,您可以使用RestFB的DefaultFacebookClient().obtainAppAccessToken() method

答案 1 :(得分:1)

我遇到了同样的问题。

向redirect_uri参数添加尾部斜杠为我解决了问题。

此外,请确保在发出请求时使用的是自己应用的URI,而不是facebook URI。

例如:

http://www.yoursite.com

对我不起作用

http://www.yoursite.com/

确实

答案 2 :(得分:1)

我不确定这是不是你想要的,但无论如何:

要获取与应用相关联的用户的访问令牌,您可以使用/ accounts'edge'(请参阅here)。

另外,this site about access tokens表示你可以像这样调用Graph API: https://graph.facebook.com/endpoint?access_token=app_id|app_secret

现在,结合它,获取访问令牌(JSON格式以及其他一些东西): https://graph.facebook.com/ {您的应用ID在这里} / accounts?access_token = {再次,您的应用ID在这里} | {您的app secret here}

请替换上面网址中的字段,并从中删除所有{和}。