【问题标题】:HTTP response code: 411 for LinkedIn with ApacheOltuHTTP 响应代码:LinkedIn 与 ApacheOltu 的 411
【发布时间】:2017-09-24 03:14:50
【问题描述】:

查看https://developer.linkedin.com/docs/oauth2 我尝试在这里获取访问令牌。

这段代码有什么问题?

    OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
    TokenRequestBuilder r = OAuthClientRequest
            .tokenLocation("https://www.linkedin.com/oauth/v2/accessToken")
            .setCode(code)
            .setGrantType(GrantType.AUTHORIZATION_CODE)
            .setClientId(LinkedInClientID)
            .setClientSecret(LinkedInClientSecret)
            .setRedirectURI("http://localhost:8080/authenticatedLinkedIn");

    Map<String,String> m = new HashMap<String,String>();
    m.put("Content-Type", "application/x-www-form-urlencoded");

    int bodyLength = r.buildBodyMessage().getBody().length();
    System.out.println("Body l = " + bodyLength);
    m.put("Content-Length", Integer.toString(bodyLength));
    r.buildHeaderMessage().setHeaders(m);
    OAuthClientRequest request = r.buildQueryMessage();
    OAuthJSONAccessTokenResponse tk = oAuthClient.accessToken(request, OAuth.HttpMethod.POST);

我收到以下错误:

服务器返回 HTTP 响应代码:411 用于 URL: https://www.linkedin.com/oauth/v2/accessToken?code=AQSZfSXpQ6z3575474fhfbZmxJQofGiwtpw53Y1FnlALvKBWJgQKfJH8kvHM-3f5ZtOqndit594S2cmZrFuiNaXcBOHuSf8yMgFgr4uh-a40Ag&grant_type=authorization_code&client_secret=gHPiGTTyb1KKHPEP&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2FauthenticatedLinkedIn&client_id=86txkd469mat

【问题讨论】:

    标签: oauth-2.0 authorization linkedin access-token oltu


    【解决方案1】:

    你需要发送一个带有参数的 POST 请求在 body urlenconded... 所以

    第一个变化:

    OAuthClientRequest request = r.buildQueryMessage();
    

    与:

    OAuthClientRequest request = r.buildBodyMessage();
    

    那么你不需要放置任何标题,Oltu 会为 U 管理这个。

    希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2020-11-12
      • 2017-12-06
      相关资源
      最近更新 更多