Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Facebook OAuth错误:验证验证代码时出错_Java_Facebook Graph Api_Oauth_Facebook Apps_Restfb - Fatal编程技术网

Java Facebook OAuth错误:验证验证代码时出错

Java Facebook OAuth错误:验证验证代码时出错,java,facebook-graph-api,oauth,facebook-apps,restfb,Java,Facebook Graph Api,Oauth,Facebook Apps,Restfb,我正在尝试获取Facebook登录的访问令牌,但出现了一个错误。我找到的所有答案都告诉我错误的重定向uri格式。 这是我得到的错误: { "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": "

我正在尝试获取Facebook登录的访问令牌,但出现了一个错误。我找到的所有答案都告诉我错误的重定向uri格式。 这是我得到的错误:

{
   "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"
   }
}
这是在Facebook应用程序中注册的重定向URI。

我所做的步骤:

  • 此链接将我重定向到
  • 然后在代码中生成下一个URI:
  • 请求此URI会给我带来错误,而不是
    access\u-token
  • 我也尝试过重定向=http://127.0.0.1:8080/MyProject/Mapping/。仍然没有结果

    此外,我还使用restFB library for 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());
    

    当我这么做的时候,有一件事让我觉得很麻烦,那就是确保重定向uri是URL编码的。在Java中,我的代码执行如下操作:

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

    用于我的重定向URL。不要对整个URL进行编码,只对重定向uri的部分进行编码。

    谢谢你的回答,但我尝试对URL进行编码,但仍然没有结果。这是编码的URL,这在浏览器中给了我同样的错误:当我尝试实现它时,我得到的代码
    重定向uri不是绝对的uri。检查RFC 3986。(代码191,子代码空)