2016-04-21 27 views
0

Ich versuche, das Zugriffstoken für die Facebook-Anmeldung zu erhalten, habe aber stattdessen einen Fehler erhalten. Alle Antworten, die ich gefunden habe, sagen mir das falsche redirect_uri-Format. Dies ist der Fehler, den ich habe:Facebook OAuth Fehler: Fehler beim Bestätigen des Bestätigungscodes

{ 
    "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" 
    } 
} 

Und hier ist die Umleitung URI in Facebook App registriert. enter image description here

Schritte, die ich tun:

  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. Dieser Link umleiten mich http://127.0.0.1:8080/MyProject/Mapping?code=GENERATED_CODE
  3. Dann im Code i erzeugen nächste 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. Anfordern dieser URI gibt mir Fehler anstelle von access_token

Ich habe tryied auch redirect_uri=http://127.0.0.1:8080/MyProject/Mapping/. Immer noch keine Ergebnisse.

Auch habe ich die gleichen Schritte mit RestFB-Bibliothek für Java gebunden. Und habe den gleichen Fehler.

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()); 

Antwort

0

Das einzige, was mich gebissen, wenn ich tat dies, um sicherzustellen, dass die redirect_uri URL-kodiert ist. In Java hat mein Code etwas wie:

import java.net.URLEncoder; 

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

für meine Weiterleitungs-URL. Codiere nicht die gesamte URL, sondern nur den Teil, der deine redirect_uri ist.

+0

Vielen Dank für Ihre Antwort, aber ich habe versucht, die URL zu verschlüsseln, und immer noch keine Ergebnisse. –

+0

Dies ist eine verschlüsselte URL, die mir den gleichen Fehler im Browser liefert: 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

Wenn ich versuche, es zu implementieren, ist der Code 'redirect_uri kein absoluter URI. Überprüfen Sie RFC 3986. (Code 191, Subcode null) ' –