gpt4 book ai didi

php - 使用 Oauth2 access_token 在 PHP 中向 LinkedIn 发布网络更新

转载 作者:行者123 更新时间:2023-12-04 05:04:13 24 4
gpt4 key购买 nike

LinkedIn REST API 的许多代码示例和工具都假设您已使用 Oauth1 进行识别,并因此获得了成员(member) token 和成员(member) secret 。

现在,LinkedIn 提供的示例代码:http://developer.linkedin.com/documents/code-samples
可以获取 Oauth2 access_token。

获得 access_token 后,您可以使用代码示例中提供的 fetch 函数进行查询并获取成员的详细信息

function fetch($method, $resource, $body = '') {


$params = array('oauth2_access_token' => $_SESSION['access_token'],
'format' => 'json',
);

// Need to use HTTPS
$url = 'https://api.linkedin.com' . $resource . '?' . http_build_query($params);
// Tell streams to make a (GET, POST, PUT, or DELETE) request
$context = stream_context_create(
array('http' =>
array('method' => $method,
)
)
);


// Hocus Pocus
$response = file_get_contents($url, false, $context);

// Native PHP object, please
return json_decode($response);
}

好的,太好了,这完美地工作。但是 prodived fetch 函数假定 body 为 NULL。
但是要使用 /v1/people/~/person-activities 发布网络更新,您需要在正文中传递一些 XML。我尝试了很多方法,找到了几十个使用 Oauth 1.0 成员 token 和成员 secret 的例子。但是当您只有 Oauth2 access_token 时,我还没有找到任何有效的解决方案。所以问题是:
需要对这个 fetch 函数进行哪些更改才能在查询中传递 XML 正文?

最佳答案

终于,我找到了答案。

function GetXMLTemplate(){
string = '<?xml version="1.0" encoding="UTF-8"?><activity locale="en_US">
<content-type>linkedin-html</content-type>
<body>xml_content</body>
</activity>';
return $string;
}

public function PostActivity($message) {
$details = $this->GetLinkedInDetails(); //own function returning basic details in Stdobject
$url = 'https://api.linkedin.com/v1/people/~/
person-activities?oauth2_access_token='.$this->access_token;
// build your message
$txt = '<a href="'.$details->siteStandardProfileRequest->url.'">'.$details->firstName.
' '.$details->lastName.'</a> '.$message;
//the below str_replace is only required because the activity contains a <a> tag
//if you don't have one, just keep the htmlspecialchars
$txt = str_replace("&","&amp;",htmlspecialchars($txt,ENT_QUOTES,'UTF-8'));
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,str_replace('xml_content',$txt,$this->GetXMLTemplate()));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml'));
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
print_r($response);
echo $http_status;
}

关于php - 使用 Oauth2 access_token 在 PHP 中向 LinkedIn 发布网络更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15728358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com