Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Spring Outh2访问令牌异常_Spring_Spring Boot - Fatal编程技术网

Spring Outh2访问令牌异常

Spring Outh2访问令牌异常,spring,spring-boot,Spring,Spring Boot,我正在spring boot应用程序中实现Outh2以进行身份验证。我成功地获取了授权代码,但当我通过rest模板向令牌url发出post请求时,它给了我异常400错误请求。通过此异常,我无法识别问题。下面是我的代码 ResponseEntity<String> response = null; System.out.println("Authorization Ccode------" + code); RestTemplate r

我正在spring boot应用程序中实现Outh2以进行身份验证。我成功地获取了授权代码,但当我通过rest模板向令牌url发出post请求时,它给了我异常400错误请求。通过此异常,我无法识别问题。下面是我的代码

        ResponseEntity<String> response = null;
        System.out.println("Authorization Ccode------" + code);

        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
        HttpEntity<String> request = new HttpEntity<String>(headers);
        String access_token_url = "https://www.googleapis.com/oauth2/v3/token";
        access_token_url += "?code=" + code;
        access_token_url += "&client_id =487786082511-ta7fnptb8dnd4lbq9lphbtbpll9eo1it.apps.googleusercontent.com";
        access_token_url += "&client_secret  =fS4KHLUUMOm-lYu8QtDOFcDV";
        access_token_url += "&grant_type=authorization_code";
        access_token_url += "&redirect_uri=http://localhost:8080/salesgoal/googleOuth2Success";
        try {
        response = restTemplate.exchange(access_token_url, HttpMethod.POST, request, String.class);
        }
        catch(Exception e){

            e.printStackTrace();
ResponseEntity response=null;
System.out.println(“授权代码-------”+代码);
RestTemplate RestTemplate=新RestTemplate();
HttpHeaders=新的HttpHeaders();
setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity请求=新的HttpEntity(标头);
字符串访问\u令牌\u url=”https://www.googleapis.com/oauth2/v3/token";
访问令牌url+=“?code=“+code;
访问“&client\u id=487786082511-ta7fnptb8dnd4lbq9lphbtbpl9eo1it.apps.googleusercontent.com”;
access_token_url+=“&client_secret=fS4KHLUUMOm-lYu8QtDOFcDV”;
访问\令牌\ url+=“&授予\类型=授权\代码”;
访问\u令牌\u url+=“&重定向\u uri=http://localhost:8080/salesgoal/googleOuth2Success";
试一试{
response=restemplate.exchange(访问\u令牌\u url,HttpMethod.POST,请求,String.class);
}
捕获(例外e){
e、 printStackTrace();
请让我知道我做错了什么。 感谢您关注谷歌的

  • 访问令牌和ID令牌的交换代码 响应包括一个代码参数,即服务器可以交换访问令牌和ID令牌的一次性授权代码。服务器通过发送HTTPS POST请求进行此交换。POST请求被发送到令牌端点,您应该使用令牌\端点元数据值从发现文档中检索令牌。fo以下讨论假设端点为。请求必须在帖子正文中包含以下参数:
  • 根据他们的文档,可能会对url参数进行验证(这会产生400个错误请求错误代码)

    请检查以下内容:

  • 重定向uri是URL编码的(通过使用)

  • Url参数不包含空格(请检查
    client\u id
    client\u secret

  • 稍后编辑:

  • 还可以尝试通过在/token请求上使用
    'Content-Type',application/x-www-form-urlencoded'
    头来遵循oauth2规范

  • 请分享您的堆栈跟踪我的团队问题已得到解决,我想问题在于客户端id和客户端机密中的空间。