0

查看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);

我收到以下错误:

Server returned HTTP response code: 411 for 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

4

1 回答 1

2

您需要在正文 urlenconded 中发送带有参数的 POST 请求......所以

第一个变化:

OAuthClientRequest request = r.buildQueryMessage();

和:

OAuthClientRequest request = r.buildBodyMessage();

然后你不需要放置任何标题 Oltu 将为 U 管理这个。

希望它会有所帮助。

于 2017-10-17T15:49:18.887 回答