从GitHub获取OAuth访问令牌时出现Cookie错误

时间:2017-01-10 06:24:24

标签: java github oauth okhttp

我正在尝试获取GitHub oauth访问令牌。将用户重定向到 https://github.com/login/oauth/authorize工作正常并获得代码。

但是,当我从服务器向https://github.com/login/oauth/acces_token发出POST请求时, 服务器以

响应
  

403:必须启用Forbidden / Cookies才能使用GitHub。

我在这里弄错了吗?这是一个API!这里的cookie有什么作用?我该如何修复错误?

我的代码是(使用OkHttp)

String code= ...;
HttpUrl url = new HttpUrl.Builder()
  .scheme("https").host("github.com")
  .addPathSegments("login/oauth/acces_token")
  .build();

StringBuilder formEncoded = new StringBuilder();
formEncoded.append("client_id=").append(URLEncoder.encode(..., "UTF-8"));
formEncoded.append("&client_secret=").append(URLEncoder.encode(..., "UTF-8"));
formEncoded.append("&code=").append(URLEncoder.encode(code, "UTF-8"));

Response resp = client.newCall(
  new Request.Builder().url(url)
  .post(RequestBody.create(
    MediaType.parse("application/x-www-form-urlencoded"),
    formEncoded.toString()))
  .addHeader("Accept", "application/json").build())
  .execute();
if (resp.code() != HttpServletResponse.SC_OK) {
    log.error("Error while getting token: {}: {} / {}", 
      resp.code(), resp.message(), resp.body().string());
    throw new RuntimeException("Error while getting access token");
}

1 个答案:

答案 0 :(得分:0)

发现错误:网址中的错字。我有acces_token,应该是access_token。现在它就像一个魅力。