Поделиться постом с LinkedIn API - PullRequest
0 голосов
/ 11 октября 2019

Я хочу поделиться с моим приложением C # MVC на портале LinkedIn без входа в систему. Пожалуйста, ведите меня.

У меня есть таблица, в которой я выбираю несколько строк и публикую сообщения в LinkedIn. Я создал приложение и проверил его. Я генерирую токен из Javascript и вход в приложение. После этого я отправляю токен доступа и сообщаю контроллеру вызов AJAX.

<a id="linkedin-button" class="btn btn-block btn-social btn-linkedin">
  <i class="fa fa-linkedin" aria-hidden="true"></i> Sign in with Linkedin
</a>
//var accessCode = '';
$('#linkedin-button').on('click', function() {
  //Initialize with your OAuth.io app public key
  OAuth.initialize('txp2rKYpuKZXaaYC5kB-m13KnVE');

  // Use popup for oauth
  OAuth.popup('linkedin2').then(linkedin => {
    console.log('linkedin:', linkedin);

    // Prompts 'welcome' message with User's email on successful login
    // #me() is a convenient method to retrieve user data without requiring you
    // to know which OAuth provider url to call
    linkedin.me().then(data => {
      console.log('me data:', data);
      alert('Linkedin says your email is:' + data.email + ".\nView browser 'Console Log' for more details");
    })

    // Retrieves user data from OAuth provider by using #get() and        
    // OAuth provider url
    linkedin.get('/v2/me').then(data => {
      console.log('self data:', data);
    });
    var accessCode = linkedin.access_token;
    alert(accessCode);
    ShareLinkedIn(accessCode);
  });
});

function ShareLinkedIn(accessCode) {
  var code = accessCode;
  var state = 'sfdsfdsfsf';
  $.ajax({
    url: '@Url.Action("PostLinkedInNetworkUpdate", "Home")',
    data: {
      accessToken: code,
      title: state
    },
    async: true,
    type: 'POST',
    cache: false,
    success: function(response) {
      alert(response);
    }
  });
}
private string linkedinSharesEndPoint = (https: //api.linkedin.com/v1/people/~/shares?oauth2_access_token={0});
private const string defaultUrl = "some-url";
private const string defaultImageUrl = "some-image-url";
public bool PostLinkedInNetworkUpdate(string accessToken, string title, string submittedUrl = defaultUrl, string submittedImageUrl = defaultImageUrl)
{
    var requestUrl = String.Format(linkedinSharesEndPoint, accessToken);
    var message = new 
    {
      comment = "Testing out the LinkedIn Share API with JSON", 
      content = new Dictionary<string, string> { 
        { "title", title }, 
        { "submitted-url", submittedUrl }, 
        { "submitted-image-url", submittedImageUrl } 
      }, visibility = new
      {
        code = "anyone"
      }
    };

    var requestJson = new JavaScriptSerializer().Serialize(message);
    var client = new WebClient();
    var requestHeaders = new NameValueCollection{{"Content-Type", "application/json"}, {"x-li-format", "json"}};
    client.Headers.Add(requestHeaders);
    var responseJson = client.UploadString(requestUrl, "POST", requestJson);
    var response = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(responseJson);
    return response.ContainsKey("updateKey");
}
...