我无法使用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>
答案 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-349或http://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 - 才能获取电子邮件地址