我尝试使用LinkedIn api向用户的连接发送消息,但我发现极端缺乏示例,缺少文档使得诊断非常困难。
我不想在用户注册时请求w_messages权限,因此我使用javascript API获取具有此权限的新访问令牌,并仅传递给服务器以进行SendMessage调用。
在客户端:
IN.init({
onLoad: "onLoadApi",
api_key: viewBag.clientSettings.LinkedInClientId,
authorize: false,
scope: "r_basicprofile r_network w_messages"
});
function onLoadApi() {
if (!IN.User.isAuthorized()) {
IN.User.authorize(sendMessage);
}
function sendMessage() {
var w_message_accesstoken = IN.ENV.auth.oauth_token;
$http.post("/MyApi/SendMessage/vBejds6Vh8", w_message_accesstoken);
}
}
在服务器上:
string jsonData = "{\"subject\":\"test subject\",\"body\":\"testbody\",\"recipients\":{\"values\":[{\"person\":{\"_path\":\"/people/vBejds6Vh8\"}}]}}"
var response= "https://api.linkedin.com/v1/people/vBejds6Vh8/mailbox"
.SetQueryParam("oauth2_access_token", accessTokenPassedFromClient)
.PostJsonAsync(jsonData);
结果:
{"Request to https://api.linkedin.com/v1/people/vBejds6Vh8/mailbox?oauth2_access_token=xxxxx failed with status code 401 (Unauthorized)."}
答案 0 :(得分:2)
您将要将此呼叫作为POST呼叫。您只能代表其访问权限的成员使用" w_messages"发送邮件。会员许可。
POST的示例请求应为: 发布https://api.linkedin.com/v1/people/~/mailbox?oauth2_access_token= ***
<?xml version='1.0' encoding='UTF-8'?>
<mailbox-item>
<recipients>
<recipient>
<person path='/people/~' />
</recipient>
<recipient>
<person path="/people/{id}" />
</recipient>
</recipients>
<subject>Congratulations on your new position.</subject>
<body>You're certainly the best person for the job!</body>
</mailbox-item>