Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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 对sendEmail端点的POST请求导致找不到org.json.JSONException:JSONObject[";oobCode";]。调用gitkitClient.getOobResponse(请求)后;_Java_Android_Json_Spring Boot_Google Identity Toolkit - Fatal编程技术网

Java 对sendEmail端点的POST请求导致找不到org.json.JSONException:JSONObject[";oobCode";]。调用gitkitClient.getOobResponse(请求)后;

Java 对sendEmail端点的POST请求导致找不到org.json.JSONException:JSONObject[";oobCode";]。调用gitkitClient.getOobResponse(请求)后;,java,android,json,spring-boot,google-identity-toolkit,Java,Android,Json,Spring Boot,Google Identity Toolkit,我正在尝试在后端实现“故障登录”链接端点。我遵循了这些步骤,通过我的Gitkit小部件JavaScript成功地获得了POST请求,但是请求中似乎缺少一些信息 我一打电话 OobResponse oobResponse = Utils.getGitkitClient().getOobResponse(request); 将抛出以下堆栈跟踪。为了简洁起见,我将只包括前几行 com.google.identitytoolkit.GitkitServerException: org.json.JSO

我正在尝试在后端实现“故障登录”链接端点。我遵循了这些步骤,通过我的Gitkit小部件JavaScript成功地获得了POST请求,但是请求中似乎缺少一些信息

我一打电话

OobResponse oobResponse = Utils.getGitkitClient().getOobResponse(request);
将抛出以下堆栈跟踪。为了简洁起见,我将只包括前几行

com.google.identitytoolkit.GitkitServerException: org.json.JSONException: JSONObject["oobCode"] not found.
    at com.google.identitytoolkit.GitkitClient.getOobResponse(GitkitClient.java:411)
    at com.google.identitytoolkit.GitkitClient.getOobResponse(GitkitClient.java:372)
    at myProject.myController.sendEmail(myController.java:86)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
...
为了排除这可能是问题的原因,以下是我用于获取GitkitClient实例的实用方法的内容:

public static GitkitClient getGitkitClient() throws FileNotFoundException {
    GitkitClient gitkitClient = GitkitClient
            .newBuilder()
            .setGoogleClientId(Constants.CLIENT_ID)
            .setServiceAccountEmail(Constants.SERVICE_ACCOUNT_EMAIL)
            .setKeyStream(new FileInputStream(Constants.SERVICE_ACCOUNT_PRIVATE_KEY_FILE_PATH))
            .setWidgetUrl(Constants.WIDGET_URL)
            .setCookieName(Constants.COOKIE_NAME)
            .build();
    return gitkitClient;
}
这是我的sendEmail端点方法签名(我正在使用Spring Boot):

最后,以下是传递到我的sendEmail方法中的HttpServletRequest的内容:

请求方法 请求头 请求参数 请注意,请求参数“challenge”是空字符串,并且没有提到“oobCode”,堆栈跟踪非常恰当地指出了这一点


我是不是遗漏了什么?我是否需要在我的小部件端点中采取额外的步骤?我是否需要在包含JavaScript小部件的HTML文件中添加更多内容?任何帮助都将不胜感激

在与在谷歌从事identity toolkit工作的人交谈后,我被告知identity toolkit项目中有一个错误的配置。在他们做了一些更改之后,我现在可以成功地调用前面提到的getOobResponse(HttpServletRequest-req)方法,而无需获得堆栈跟踪

我猜这意味着oobCode不在眼睛里,这就是它的意思。问题是为什么它不在那里。你是否在服务器上生成json响应,如果是,你可以在发送之前打印响应,这样你就可以确定它是否真的有那个对象。问题不在于响应,@PankajNimgade。问题在于我无法控制的请求。虽然从技术上讲,referer是我后端的另一个方法,但identity toolkit负责发送POST请求。在这种情况下,您需要确认需要哪些参数、头和方法名称,才能向我发送适当的请求以获得结果
@RequestMapping(value = "/sendEmail", method = RequestMethod.POST)
@ResponseBody
public void sendEmail(HttpServletRequest request, HttpServletResponse response) {
POST
Header name: host  
Header value: example.com:8080

Header name: connection  
Header value: keep-alive

Header name: content-length  
Header value: 1100

Header name: origin  
Header value: http://example.com:8080

Header name: user-agent  
Header value: Mozilla/5.0 (Linux; Android 5.0.2; HTC6500LVW Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36

Header name: content-type  
Header value: application/x-www-form-urlencoded;charset=UTF-8

Header name: accept  
Header value: */*

Header name: referer  
Header value: http://example.com:8080/myProject/callback?mode=recoverPassword&identifier=test@test.com

Header name: accept-encoding  
Header value: gzip, deflate

Header name: accept-language  
Header value: en-US

Header name: x-requested-with  
Header value: [MY APP PACKAGE NAME OMITTED]
Parameter name: action  
Parameter value: resetPassword

Parameter name: email  
Parameter value: test@test.com

Parameter name: challenge  
Parameter value:

Parameter name: response  
Parameter value: 03AHJ_Vuued2d7eKM-hD[... CONTENTS OMITTED ...]G1mzdsuc8