Skip to content
戻る

C# CoreTweetのTutorialを少しやった

Published:  at  01:35

概要

ASP.NETで書いてるコードで躓いたので原点回帰でもないですけど
CoreTweetの公式Tutrialを必要そうなところだけちょろっとやったのでメモ

やったこと

目次

環境

ソース

https://github.com/Lycheejam/CoreTweetTest 🔗

前提

TwitterAPIキーの取得

ConsumerKeyとConsumerSecret。

CoreTweetの入手

普通にNuGetから入手

CoreTweet Tutorial

こちらのクイックチュートリアルをかいつまんでやりました。

https://github.com/CoreTweet/CoreTweet/wiki/%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB 🔗

OAuth認証

var s = OAuth.Authorize("Consumer_key", "Consumer_Secret");
//PINコードを取得するためのURLを発行
Console.WriteLine("access here: {0}", s.AuthorizeUri);

//PINコードを入力
var pin = Console.ReadLine();
var t = s.GetTokens(pin);

//テストツイート
t.Statuses.Update(status => "CoreTweet Tutorial hello");

そしたらトークンが生成されるのでツイートされる。

メモ:Read-only application cannot POST

初っ端にRead-only application cannot POSTって例外がスローされた
Twitter APIのパーミッションがおかしいらしいがちゃんと「Read & Write」になっていた。
念の為、パーミッションの更新を掛けてやるとでなくなった。

参考:http://koni.hateblo.jp/entry/2016/05/11/164552 🔗

AccessTokenとAccessTokenSecretの取得

いちいちPINコードを入力していたはアホらしいのでAccessTokenAccessTokenSecretを取得して
これがあれば何でもできる状態にする。

上記のコード実行時に続けて下記のコードも実行する。

Console.WriteLine("AccessToken:{0}",t.AccessToken);
Console.WriteLine("AccessTokenSecret:{0}", t.AccessTokenSecret);

コンソール画面にAccessTokenAccessTokenSecretが出力されるのでメモっておく。

AccessTokenとAccessTokenSecretを使用してTokenを作成

先程取得したAccessTokenAccessTokenSecretを使ってTokenを生成
ついでにリプライツイートも飛ばしてみる。

var t = Tokens.Create("Consumer_key",
                      "Consumer_Secret",
                      "AccessToken",
                      "AccessTokenSecret");
//PINコード無しでツイートできる。
var res = t.Statuses.Update(status => "CoreTweetReplyTest");
//リプライツイートのテスト
res = t.Statuses.Update(status => "Reply Test1", in_reply_to_status_id => res.Id);
res = t.Statuses.Update(status => "Reply Test2", in_reply_to_status_id => res.Id);

参考

雑感

とりあえずメモ程度に
ASP.NETで書いてるコードだとリプライ先(メンション先?)が変わらなくてなんでだー?って躓いてたんですが
これで書いてるコードがおかしいのが確定したので良かったです。



前の記事
EntityFrameworkでテーブルがコミットされていなかった
次の記事
C# 乱数の生成(RNGCryptoServiceProviderを使う)