2

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

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

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

它适用于 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

4 回答 4

5

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

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

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

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

于 2013-02-09T00:29:52.060 回答
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);
于 2013-02-04T15:29:48.430 回答
1

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

于 2013-01-28T11:15:06.580 回答
0

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

于 2013-04-28T08:32:57.907 回答