2

Twitter などのソーシャル メディア自動化を選択したユーザーが Twitter ボタンをクリックすると、oauth 手順が実行される Web アプリケーションがあります。その oauth プロセスは、php を使用して行われます。

その特定のユーザーの oauth トークンと oauth シークレットをデータベースに保存します。

今、私は4つの鍵を持っています:

ConsumerKey // common for all as it is the key of app in dev.twitter.com
ConsumerSecret // common for all as it is the secret of app in dev.twitter.com
OauthToken //store in database, which keeps on changing as other user activates the socia media
OauthTokenSecret //store in database, which keeps on changing

以下のようなすべての承認手法を適用しました。

 var auth = new MvcAuthorizer
            {
                Credentials = new InMemoryCredentials
                {
                    ConsumerKey = "###################",
                    ConsumerSecret = "##################",
                    OAuthToken = token,
                    AccessToken = secret
                }
            };
            auth.Authorize(); 


 var auth = new SingleUserAuthorizer
            {
                Credentials = new InMemoryCredentials
                {
                    ConsumerKey = "###############",
                    ConsumerSecret = "#############################",
                    OAuthToken = token,
                    AccessToken = secret
                }
            };
            auth.Authorize();

問題は、サイト dev.twitter.com で提供されているトークンとシークレットを入力するとすべて正常に機能しますが、データベースに保存されているトークンとシークレットを提供すると、ユーザーが認証されないことです。

4

1 に答える 1

1

SingleUserAuthorizer では、Authorize を呼び出さないでください。また、4 つの資格情報すべてをオーソライザーに提供するときはいつでも、Authoirize を呼び出す必要はありません。LINQ to Twitter は、これらの資格情報を使用して認証ヘッダーを作成します。

authorize を呼び出すケースは、ConsumerKey と ConsumerSecret のみを提供し、オーソライザーのタイプが SingleUserAuthorizer でない場合です。Authorize は、OAuthToken と AccessToken を取得する OAuth プロトコルの一部を実装します。

SingleUserAuthorizer の構文は機能するはずですが、キーを Twitter アプリ ページの名前に一致させる別の方法を次に示します。

        var auth = new SingleUserAuthorizer
        {
            Credentials = new SingleUserInMemoryCredentials
            {
                ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"],
                ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"],
                TwitterAccessToken = ConfigurationManager.AppSettings["twitterAccessToken"],
                TwitterAccessTokenSecret = ConfigurationManager.AppSettings["twitterAccessTokenSecret"]
            }
        };
于 2014-01-13T16:23:11.867 に答える