Я пытаюсь использовать LinkedIn api для отправки сообщения пользователю, но я нахожу крайнее отсутствие примеров и недостающих документов затрудняют диагностику.LinkedIn отправить сообщение подключению
Я не хочу запрашивать разрешение 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)."}
В вашем обновленном примере вы делаете вызов POST https://api.linkedin.com/v1/people/ vBejds6Vh8/почтовый ящик. Является ли «vBejds6Vh8» пользователем, чей токен доступа вы используете? Попробуйте вместо этого использовать «~». Кроме того, вы получили свой токен доступа через JS API? Если это так, вам нужно будет обменять его на токен REST: https://developers.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens –
Спасибо. vBejds6Vh8 - это взаимное соединение пользователя, чей токен доступа я использую, это разрешено? Кроме того, я не реализовал этот обменный поток, так что это, вероятно, проблема. Будет ли этот обменный поток работать, если я использую oAuth2, потому что ссылка ссылается только на oAuth 1.0a. Кроме того, в шаге 3 говорится: «Самый простой способ добиться этого - использование готовой библиотеки OAuth». Я осмотрелся, но я не могу найти пример такого на C#. Я использую Asp.Net Identity Framework, но я не знаю каких-либо встроенных функций для этой задачи? – parliament
Если у вас есть токен доступа для пользователя A, вы должны сделать POST-вызов почтовому ящику пользователя A с помощью символа «~», чтобы назначить его, а затем установить пользователя B в качестве получателя. –