LinkedIn在尝试共享时返回401:未知身份验证方案

时间:2016-02-23 22:14:25

标签: php rest linkedin linkedin-api

我正在尝试在我们的项目中实现对LinkedIn的共享。它对我来说就像一个魅力,然而,对我所有的同事来说,事实并非如此。它仅为共享请求返回import pandas as pd pd.read_table("file.path",sep="\t",index_col=0) (配置文件请求正常工作)。

我们使用的LinkedIn应用程序归我所有。出于测试目的,另一位开发人员试图在他的帐户中创建一个应用程序,但问题仍然存在:我是唯一可以共享的人。

我们正在使用linkedinapi/linkedin作为后端。这是代码:

401: Unknown authentication scheme

UPD:结果表明它只能在我的机器上发布,因此他们的计算机上的配置有问题。寻找它。

1 个答案:

答案 0 :(得分:1)

<强>研究

我让我的同事在我的机器上登录LinkedIn,查看他的帐户或他的电脑的发布是否失败。它发布了,这表明我的配置有问题,这就是它的工作原理。

我的下一步是重新安装所有供应商软件包,包括上面提到的linkedinapi/linkedin。之后,该帖子也停止了为我工作。在检查了图书馆签署请求的方式后,我发现它与LinkedIn要求的方式不符。该库在URL中包含oauth2_access_token参数,但LinkedIn期望在其文档中声明Authorization HTTP标头:

  

获得访问令牌后,您可以代表用户开始进行经过身份验证的API请求。这是通过在对LinkedIn的API的HTTP调用中包含“授权”标题来实现的。

<强>解决方案

所以现在我改变了我提出请求的方式。而不是

$result = $this->connection->post('/people/~/shares?format=json', $object);

我使用了一个不同的功能,允许我手动包含标题:

$result = $this->connection->fetch(
    '/people/~/shares?format=json',
    $object,
    \LinkedIn\LinkedIn::HTTP_METHOD_POST,
    [ 'Authorization: Bearer ' . $this->connection->getAccessToken() ]
);

另外,我向存储库创建了一个拉取请求。