2016-04-21 3 views
0

Я пытаюсь получить токен доступа для входа в Facebook, но вместо этого получил ошибку. Все ответы, которые я нашел, рассказывают мне о неправильном формате redirect_uri. Это ошибка я получил:Facebook Ошибка OAuth: Ошибка проверки кода подтверждения

{ 
    "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, 
     "fbtrace_id": "Ht12b5BKgRK" 
    } 
} 

А вот редирект URI зарегистрирован в Facebook App. enter image description here

Шаги, которые я делаю:

  1. https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=http://127.0.0.1:8080/MyProject/Mapping&scope=user_posts&response_type=code
  2. Эта ссылка перенаправляет меня http://127.0.0.1:8080/MyProject/Mapping?code=GENERATED_CODE
  3. Затем в коде я генерировать следующий URI: https://graph.facebook.com/oauth/access_token?client_id=549422435210997&redirect_uri=http://127.0.0.1:8080/MyProject/Mapping&client_secret=CLIENT_SECRET&code=GENERATED_CODE
  4. запрашивающая этот URI дает мне ошибку вместо access_token

Я тоже попытался redirect_uri=http://127.0.0.1:8080/MyProject/Mapping/. Все еще никаких результатов.

Кроме того, я использовал те же шаги, используя библиотеку restFB для Java. И получил ту же ошибку.

ScopeBuilder scopeBuilder = new ScopeBuilder(); 
scopeBuilder.addPermission(UserDataPermissions.USER_POSTS); 
FacebookClient client = new DefaultFacebookClient(Version.LATEST); 
String loginDialogUrlString = client.getLoginDialogUrl(APP_ID, "http://127.0.0.1:8080/MyProject/Mapping", scopeBuilder); 
System.out.println(loginDialogUrlString); 

System.out.println(); 
AccessToken appAccessToken = client.obtainAppAccessToken(APP_ID, APP_SECRET); 
System.out.println(appAccessToken.getAccessToken()); 
System.out.println(appAccessToken.getTokenType()); 

//On this step i got the same error 
AccessToken userAccessToken = client.obtainUserAccessToken(APP_ID, APP_SECRET, "http://127.0.0.1:8080/MyProject/Mapping/", appAccessToken.getAccessToken()); 
System.out.println(userAccessToken.getAccessToken()); 

ответ

0

Единственное, что меня укусило, когда я это делал, - убедиться, что redirect_uri закодирован в URL. В Java мой код сделал что-то вроде:

import java.net.URLEncoder; 

URLEncoder.encode("http://127.0.0.1:8080/MyProject/Mapping", "UTF-8") 

для моего переадресации. Не кодируйте весь URL-адрес, а только часть, которая является вашей redirect_uri.

+0

Спасибо за ваш ответ, но я попытался кодировать URL-адрес и не получил никаких результатов. –

+0

Это кодированный URL-адрес, который дает мне такую ​​же ошибку в браузере: https://graph.facebook.com/oauth/access_token?client_id=APP_ID&redirect_uri=http%3A%2F%2F127.0.0.1%3A8080%2FMyProject%2FMapping % 2F & client_secret = CLIENT_SECRET –

+0

Когда я пытаюсь реализовать его, код, который я получил «redirect_uri», не является абсолютным URI. Проверьте RFC 3986. (код 191, подкод null) ' –

Смежные вопросы