OAuth令牌invalid_grant

时间:2012-10-23 15:48:20

标签: java oauth oauth-2.0

我正在尝试将Google Plus API集成到我的网络应用程序中。

我可以通过Google进行身份验证,然后获取代码。当我尝试使用access_token获取HttpClient时会出现此问题。

以下是一些代码:

DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost post = new HttpPost(
                "https://accounts.google.com/o/oauth2/token");
        post.addHeader("accept", "application/json");
        post.addHeader("Content-Type", "application/x-www-form-urlencoded");

        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair("code", myCode));
        nvps.add(new BasicNameValuePair("client_id",
                "my_client_id"));
        nvps.add(new BasicNameValuePair("redirect_uri",
                "http://localhost:8080/test/gplus.do"));
        nvps.add(new BasicNameValuePair("client_secret",
                "my_client_secret"));
        nvps.add(new BasicNameValuePair("grant_type", "authorization_code"));
        post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

        HttpResponse response = httpClient.execute(post);

        BufferedReader br = new BufferedReader(new InputStreamReader(
                (response.getEntity().getContent())));

        String output;
        while ((output = br.readLine()) != null) {
            res = res + output;
        }

我之前已经设法在我的模拟应用程序中多次获取令牌,但现在它似乎因某种未知原因而失败。我得到的只是error:invalid_grant。为什么会这样?

1 个答案:

答案 0 :(得分:1)

你确定以前用过这种方式的令牌吗? AFAIK,在oAuth中,您首先调用/授权获取授权代码,然后使用此代码调用/ token来获取访问令牌。

P.S。您可以将包用作Spring for oAuth,因此它可以制作所有“幕后”内容,您只需配置XML即可。