C # Asp.net Linkedin авторизация с использованием Linkedintoolkit с DotNetOpenAuth - PullRequest
1 голос
/ 02 августа 2011

Я пытаюсь разрешить моему приложению ASP.net использовать API-интерфейсы Linkdin, но, похоже, не могу правильно пройти аутентификацию.Я надеялся, что кто-нибудь может взглянуть на мой исходный код и понять, что я могу делать неправильно.

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

Процесс, насколько я понимаю, в самых простых терминах выглядит следующим образом.

  1. Создание реализации IConsumerTokenManager из DotNetOpenAuth
  2. Использование класса 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 и не могу решить эту проблему.Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 02 августа 2011

вы можете попробовать этот образец Я нашел из здесь Я успешно реализовал ранее

...