不完整的Linkedin OAuth 2.0访问令牌响应

时间:2018-02-02 16:25:53

标签: oauth oauth-2.0 linkedin linkedin-api

我的问题是来自Linkedin api的OAuth2访问令牌响应。当我试图获得此令牌时,我收到以下回复:

{"access_token":"...","expires_in":...}

但问题是,根据OAuth2 documentation(在5.1段中),应该至少还有一个必需参数 - &#34; token_type&#34;。 所以问题是:它可能以某种方式自定义,因此linkedin API将返回带有访问令牌响应的参数,或者它只是偏离规则并且不会返回此参数?< / p>

提前致谢。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。根据{{​​3}}:

  

成功的访问令牌请求将返回包含以下字段的JSON对象:

     
      
  • access_token - 用户的访问令牌。根据您对API使用条款的同意,此值必须保持安全。
  •   
  • expires_in - 在请求到期之前,从请求的时间开始剩余的秒数。目前,所有访问令牌都有60天的使用期限。
  •   

他们回复

{"access_token":"...","expires_in":...}

违反了标准。

目前我正在使用Spring Security 5.0.3并解决了这个问题,我不得不monkeypatch一个类:

com.nimbusds.oauth2.sdk.token.BearerAccessToken

我不会发表全班,只是重要的一部分:

public static BearerAccessToken parse(final JSONObject jsonObject)
        throws ParseException {

        // Parse and verify type
        AccessTokenType tokenType;
        try {
            tokenType = new AccessTokenType(JSONObjectUtils.getString(jsonObject, "token_type"));
        } catch (ParseException ex) {
            tokenType = AccessTokenType.BEARER;
        }

        if (!tokenType.equals(AccessTokenType.BEARER))
            throw new ParseException("Token type must be \"Bearer\"");
        //...
}

答案 1 :(得分:0)

我希望从Linkedin成员那里得到答复,因为他们在他们的网站上指出stackoverflow是询问此类问题的合适场所。但是由于他们没有答案,而且我也没有找到有关此问题的任何相关信息,所以我相信这只是他们实现OAuth 2.0协议的方式。