【问题标题】:Linkedin 403 Forbidden Error while getting connections email and name in JSApi在 JSApi 中获取连接电子邮件和名称时出现 Linkedin 403 禁止错误
【发布时间】:2019-02-19 01:02:50
【问题描述】:

我正在尝试从连接中获取电子邮件、姓名和图片,但是当用户进行身份验证时,我收到错误“GET https://api.linkedin.com/v1/people/~/connections:(picture-url,first-name,email-address)?count=30 403 (Forbidden)”

我在下面发布我的代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://platform.linkedin.com/in.js">
    api_key: uey3banalp6s
    authentication: true
</script>

<script type="text/javascript">

    function loadData() {
    IN.API.Connections("me")
    .fields(["pictureUrl","firstName","emailAddress"])
    .params({"count":30})
    .result(function(result) {
    profHTML = "";
    for (var index in result.values) {
    profile = result.values[index]
    if (profile.pictureUrl) {
    profHTML += "email:" + profile.emailAddress;
    profHTML += "name:" + profile.firstName;
    profHTML += "<img class=img_border height=30 align=\"left\" src=\"" + profile.pictureUrl + "\">";
    }
    }
    $("#connections").html(profHTML);
    });
    }

</script>
</head>

<body>
<div id="connections"></div>
    <script type="IN/Login" data-onAuth="loadData">
</script>
</body>
</html>

【问题讨论】:

  • “禁止”通常表示您忘记正确设置身份验证(因此系统知道您正在尝试获取数据)或者您正在尝试从错误的 url 获取数据(并且来自其他 url 的数据是您无权访问的)

标签: javascript api linkedin


【解决方案1】:

API 不理解“身份验证:真”。它应该是“授权:真”。

<script type="text/javascript" src="http://platform.linkedin.com/in.js">
    api_key: uey3banalp6s
    authorize: true
</script>

【讨论】:

  • 我看不到如何让 JS 对象表示法在对象外部浮动并且它实际上可以理解它。如果您实际上是正确的,我赞成您的回答来替换我的回答。你有任何解释的链接,或者你能解释一下这是怎么可能的吗?
  • 很遗憾,我无法解释这是如何工作的,因为我自己也不懂。然而,这实际上是这样做的方式很容易在这里检查:developer.linkedin.com/documents/getting-started-javascript-api 见第 5 点;自动获取授权
【解决方案2】:

将脚本初始化代码更改为:

<script type="text/javascript" src="http://platform.linkedin.com/in.js">
    api_key: your_api_key
    authentication: true
    scope: r_basicprofile r_emailaddress
</script>

这应该使您的脚本正常工作。您缺少范围权限。更多信息:Profile Fields permisssions

【讨论】:

  • 啊,该死的,这就是我错过的。谢谢萨默!
【解决方案3】:

首先出现的脚本,即您加载 LinkedIn 的位置,是一团糟。您需要将 API 密钥放在引号中,否则 JavaScript 会认为加密集群炸弹是一个变量名。其次,您在看似赋值的内容中使用了冒号,但您不在对象文字中。尝试使用

api_key = "uey3banalp6s";
authentication = true;

【讨论】:

  • -1:这个答案不正确。 api-key 是根据 LinkedIn 的规范给出的。我也是这样做的,它应该可以正常工作。
  • 'authentication' 应该是 'authorize',但没有引号。
【解决方案4】:

我很确定你不能这样做(但显然有黑客可以允许它)

<script type="text/javascript" src="http://platform.linkedin.com/in.js">
    api_key: uey3banalp6s   //nothing in here gets used if src is set
    authentication: true    //even if it did it would be "=" not ":"
</script>

将 Keith 的答案放在你的其他脚本标签中

【讨论】:

  • 你最好还是投票给他。
  • @Daedalus 我会拥有,但它缺少包含在 src'd 脚本标签中的源代码,这太笨拙了,无法添加评论。我想我可以编辑它...
  • 你的意思是告诉我 JavaScript 确实理解这些脚本标签的内容?
  • 不,它只是忽略它们自己尝试,添加:&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js?"&gt; alert("fna i was wrong");&lt;/script&gt; 最重要的是它甚至不会在控制台中出错......虽然我猜是把 cmets 放在 api 上的好地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 2015-03-16
相关资源
最近更新 更多