0

Twitterに登録した「アプリケーション」を使ってツイートできるアプリを書こうとしています。私は TweetSharp を使用しており、次のように TwitterService をセットアップしようとしました。

public Twitter(string consumerKey, string consumerSecret)
    {
        this.twitterService = new TwitterService(consumerKey, consumerSecret);
        OAuthRequestToken oAuthRequestToken = this.twitterService.GetRequestToken();
        Uri uri = this.twitterService.GetAuthorizationUri(oAuthRequestToken);
        Process.Start(uri.ToString());
        OAuthAccessToken oAuthAccessToken = 
            this.twitterService.GetAccessToken(oAuthRequestToken);
        this.twitterService
            .AuthenticateWith(oAuthAccessToken.Token, oAuthAccessToken.TokenSecret);
    }

OAuthAccessToken 行に到達し、Authorize [my app] to use your account? に移動します。Twitter サイトのページ。偽のコールバック URL を指定する前に、[アプリを承認] ボタンをクリックしたときにユーザーが入力することになっている PIN を含むページが表示されました。次に、偽のコールバック URL を追加すると、そのページに移動しようとし、次のエラーでコードが粉々に吹き飛ばされます。

リモート サーバーがエラーを返しました: (401) 権限がありません。

私が知りたいのは、PIN を入力したり、正当なコールバック URL を持ったりしなくても、プログラムでツイートできますか?

4

1 に答える 1

1

ツイートは、ユーザーのコンテキストで送信する必要があります。(参照: POST statuses/update。) したがって、アプリはツイートを送信するためにユーザーの承認 (OAuth アクセス トークン) を取得する必要があります。PIN ベースの認証またはコールバック URL のいずれかを使用しないとアクセス トークンを取得できないため、残念ながら、あなたが求めていることは単純に実行できません。

ただし、ユーザーがアプリを起動するたびに PIN の入力を求められるのを避けたい場合は、答えは簡単です。有効なアクセス トークンを取得したら、それをどこかに (ファイルなどに) 保存してから再読み込みします。次にアプリを実行するとき。私の WinForms アプリでは、.NET の組み込みのユーザーごとの設定メカニズムを使用して、アクセス トークンとアクセス トークン シークレットを保存します。アクセス トークンを永続化するために、Web アプリはおそらくデータベースなどを使用した方がよいでしょう。

注: これを行う場合は、保存されているアクセス トークンの有効性も確認し、無効になっている場合は承認プロセスを繰り返す必要があります。Twitter API のドキュメントでは、この目的でGET account/verify_credentialsメソッドを使用することを提案しています。

于 2013-05-08T01:36:08.060 に答える