Я пытаюсь разрешить моему приложению ASP.net использовать API-интерфейсы Linkdin, но, похоже, не могу правильно пройти аутентификацию.Я надеялся, что кто-нибудь может взглянуть на мой исходный код и понять, что я могу делать неправильно.
Прежде всего, я пытаюсь выполнить действия, описанные в этой документации Linkedintoolkit , и, хотя я выполняю действия, мне все еще не повезло.
Процесс, насколько я понимаю, в самых простых терминах выглядит следующим образом.
- Создание реализации IConsumerTokenManager из DotNetOpenAuth
- Использование класса WebOAuthAuthorization для авторизации моегоприложение и вернуть токен доступа для будущих вызовов API.
Моя реализация IConsumerTokenManager выглядит следующим образом
Я добавил поддельный ключ API и секретный ключ по очевидным причинам в этом примере
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DotNetOpenAuth.OAuth.ChannelElements;
using DotNetOpenAuth.OAuth.Messages;
namespace UserLibrary.SocialMedia
{
public class ConsumerTokenManager : IConsumerTokenManager
{
private const string API_KEY = "ylk7j2jq4j7l";
private const string SECRET_KEY = "WH3dlPFhPyWG0xlw";
private Dictionary<string, string> tokensAndSecrets = new Dictionary<string, string>();
public ConsumerTokenManager()
{
ConsumerKey = API_KEY;
ConsumerSecret = SECRET_KEY;
}
#region ITokenManager Members
public string ConsumerKey { get; private set; }
public string ConsumerSecret { get; private set; }
public string GetTokenSecret(string token)
{
return this.tokensAndSecrets[token];
}
public void StoreNewRequestToken(UnauthorizedTokenRequest request, ITokenSecretContainingMessage response)
{
this.tokensAndSecrets[response.Token] = response.TokenSecret;
}
public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret)
{
this.tokensAndSecrets.Remove(requestToken);
this.tokensAndSecrets[accessToken] = accessTokenSecret;
}
/// <summary>
/// Classifies a token as a request token or an access token.
/// </summary>
/// <param name="token">The token to classify.</param>
/// <returns>Request or Access token, or invalid if the token is not recognized.</returns>
public TokenType GetTokenType(string token)
{
throw new NotImplementedException();
}
#endregion
}
}
А вот и кодовый блок, который вызывает BeginAuthorization
ConsumerTokenManager consumerTokenManager = new ConsumerTokenManager();
_webOAuthorization = new WebOAuthAuthorization(consumerTokenManager, _accessToken);
_webOAuthorization.BeginAuthorize();
_accessToken = _webOAuthorization.CompleteAuthorize();
Когда вызывается BeginAuthorization (), я перенаправлен на «Grant K2PS Publisher»доступ к вашей учетной записи LinkedIn «Patrick A» Разрешите доступ только в том случае, если вы доверяете этому приложению страницу LinkedIn своей сетевой информации Linkedin и нажимаете «Хорошо, я разрешу», что возвращает меня в мое веб-приложение.Однако метод _completeAuthorization () никогда не срабатывает, и его значение равно нулю, если я пытаюсь вернуть строку.
Также следует отметить, что мой вывод консоли выдает исключение Threading во время процесса.
Ниже представлена копия моей консоли.
Произошло первое исключение типа 'System.Threading.ThreadAbortException' в mscorlib.dll. Исключение типа 'System.Threading.ThreadAbortException 'произошел в mscorlib.dll, но не был обработан в пользовательском коде
Я довольно новичок в присяге, но пролил API и не могу решить эту проблему.Любая помощь будет принята с благодарностью.