ASP .NET(C#)でCoreTweetを使って画像付きツイートを行う

●CoreTweet で Oauthを使って画像付きツイートを行う。

●Oauthログインからツイートまでの流れ

1. CheckApi.aspx
 ↓
2. Twitterログイン画面
 ↓
3. TwitterCallback.aspx

●1. CheckApi.aspx

全ての aspx.cs ファイルには次のようにキーをセットしておきましょう(もちろん設定ファイルに外だしするのがベスト)

using CoreTweet;
        public const string CONSUMER_KEY = "OWCPpT5DZYA1....................";
        public const string CONSUMER_SECRET = "lrtzd7MxAX3oDW.....................................................";
        public const string OAUTH_CALLBACK = "http://YOUR-SERVER.TLD/TwitterCallback.aspx";
        protected void Page_Load(object sender, EventArgs e)
        {
            var oauth_session = OAuth.Authorize(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_CALLBACK, null);
            var url = oauth_session.AuthorizeUri;
            Session["OAuthSession"] = oauth_session;
            Response.Redirect(oauth_session.AuthorizeUri.OriginalString);
        }

●3. TwitterCallback.aspx

        protected void Page_Load(object sender, EventArgs e)
        {
            string oauth_token = Request.QueryString["oauth_token"];
            string oauth_verifier = Request.QueryString["oauth_verifier"];
            // OAuthSessionインスタンスを復元
            var oauth_session = Session["OAuthSession"] as OAuth.OAuthSession;
            if (oauth_session == null)
            {
                throw new HttpException(403, "oauth_session is null");
            }
            var token = oauth_session.GetTokens(oauth_verifier);
            if (token == null)
            {
                throw new HttpException(403, "oauth token is null");
            }
            // ツイートする
            postImageAndTweet(token);
        }

        protected void postImageAndTweet(CoreTweet.Tokens token)
        {
            // 画像をアップロード
            //media 引数には FileInfo, Stream, IEnumerable<byte> が指定できます。
            //また media_data 引数に画像を BASE64 でエンコードした文字列を指定することができます。
            MediaUploadResult upload_result = token.Media.Upload(media: new FileInfo(@"C:\img\up_test.png"));

            // 画像とテキストをツイート
            string tweet_text = "ツイートのテストです";
            token.Statuses.Update(new {
                status = tweet_text ,
                media_ids= new long[] { upload_result.MediaId }
            });
        }

base64 でエンコードした画像データを使用する場合は

string png_base64 = "iVBORw0K...........ggg==";
MediaUploadResult upload_result = token.Media.Upload(media_data: png_base64);

のように media_data で渡します。

No.1565
08/05 13:01

edit