1

ASP.net アプリケーションが Linkdin API を使用することを承認しようとしていますが、適切に認証できないようです。誰かが私のソースコードを見て、私が間違っているかもしれないことを見つけてくれることを望んでいました.

まず、このLinkedintoolkitのドキュメントの手順に従おうとしていますが、手順に従っていますが、まだ運がありません.

私が理解しているプロセスは、最も簡単な言葉で言えば次のとおりです。

  1. DotNetOpenAuth の IConsumerTokenManager の実装を作成する
  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()」が呼び出されると、「LinkedIn アカウント「Patrick A」への K2PS パブリッシャー アクセスを許可し、LinkedIn ネットワーク情報でこのアプリケーションを信頼する場合にのみアクセスを許可する」Linkedin ページにリダイレクトされ、「OK I'll allow」をクリックします。それは私のウェブアプリに私を返します。ただし、「_completeAuthorization()」メソッドがヒットすることはなく、文字列を返そうとするとその値は null になります。

また、私のコンソール出力は、プロセス中にスレッド例外をスローします。

以下は私のコンソールアウトのコピーです

タイプ 'System.Threading.ThreadAbortException' の初回例外が mscorlib.dll で発生しました タイプ 'System.Threading.ThreadAbortException' の例外が mscorlib.dll で発生しましたが、ユーザー コードで処理されませんでした

私はOathにかなり慣れていませんが、APIに注いでいて、これを解決できないようです。どんな助けでも大歓迎です。

4

1 に答える 1

1

ここから見つけたこのサンプルを試すことができます。以前に正常に実装しました..

于 2011-08-02T05:21:40.803 に答える