Linkedin“Scope”变量未设置

时间:2013-01-26 12:42:17

标签: spring-social

我无法使用Spring Social建立与Linkedin Api的连接。

我将“范围”变量“r_emailaddress”作为隐藏字段传递,其中包含用于检索电子邮件地址的表单,但它不起作用 - 我没有像您这样看到email_address权限。 https://developer.linkedin.com/sites/default/files/gp-dialog.png

我正在关注Spring Social Showcase应用程序示例。我应该补充一点,社交应用程序没有隐藏的范围字段。

它适用于Facebook。

表格

<form name="linkedinin_signin" id="linkedin_signin" action="${linkedin_uri}" method="POST">
    <input type="hidden" name="scope" value="r_basicprofile, r_emailaddress" />
    <input type="image" src="${linkedin_img_uri}" />
</form>

4 个答案:

答案 0 :(得分:5)

LinkedIn是一个OAuth 1.0a提供商是正确的,并且“范围”参数对于OAuth 1.0(a)而言是非标准的。因此,Spring Social无法识别OAuth 1.0(a)提供程序的范围参数。

但是,您可能有兴趣知道昨天我将一个更改推送到Spring Social,它将允许任意参数传递到请求令牌URL和授权URL ...包括“scope”参数。这个相对较新的更改仅在最新的1.1.0.BUILD-SNAPSHOT版本中可用,但很快将在1.1.0.M2中出现。这应该满足您的需求。

您可能还想查看Spring Social Showcase示例,因为它现在使用“scope”参数在用户连接到LinkedIn时请求“r_emailaddress”范围。

我很感激您对此更改的任何反馈,最好是对https://jira.springsource.org/browse/SOCIAL-349http://forum.springsource.org/forumdisplay.php?82-Social的Spring社交论坛的评论。 (我不像在Spring社交论坛上那样经常监视StackOverflow上的问题。)

答案 1 :(得分:2)

我和LinkedIn有同样的问题。以下是我为解决这个问题所做的工作:

而不是

    final OAuth1Parameters params = new OAuth1Parameters();
    params.set("scope", "r_emailaddress r_basicprofile");

我必须使用fetchRequestToken

发送地图
    final MultiValueMap<String, String> mvm = new LinkedMultiValueMap<String, String>();
    mvm.add("scope", "r_emailaddress");
    mvm.add("scope", "r_basicprofile");
    inRequestToken = oauth1Operations.fetchRequestToken(redirectUri, mvm);

答案 2 :(得分:1)

LinkedIn被SpringSecurity认可为OAuth1提供商。 OAuth1不支持“访问令牌范围”功能。因此,您的范围参数将被忽略。实际上LinkedIn使用支持范围的非官方OAuth 1.0a协议版本。作为一种解决方法,您可以尝试覆盖一些SpringSocial类并将范围参数发送到LinkedIn。请参阅this主题。

答案 3 :(得分:0)

链接的oAuth1 API根本不支持范围参数,您必须使用oAuth2 - http://developer.linkedin.com/documents/authentication - 才能获取电子邮件地址