1

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

我能够通过 Google 进行身份验证并获得代码。当我尝试access_token使用 using时会出现问题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。为什么会这样?

4

1 回答 1

1

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

ps 您可以将包用作oAuth 的 Spring,因此它制作了所有“幕后”的东西,您所要做的就是配置 XML。

于 2012-10-24T07:04:02.907 回答