後のtwitterの更新Twitterizer
-
25-09-2019 - |
質問
私はこの作品のコード:
var settings = WebConfigurationManager.AppSettings;
var consumerKey = settings["Twitter.ConsumerKey"];
var consumerSecret = settings["Twitter.ConsumerSecret"];
var authToken = settings["Twitter.OAuthToken"];
var authVerifier = settings["Twitter.OAuthVerifier"];
//var accessToken = GetAccessToken(
// consumerKey, consumerSecret, authToken, string.Empty);
var tokens = new OAuthTokens()
{
AccessToken = authToken,
AccessTokenSecret = authVerifier,
ConsumerKey = consumerKey,
ConsumerSecret = consumerSecret
};
TwitterStatus.Update(tokens, txtComment.Text);
すべてのいのですが更新をツイッターでも状態にします。残念なことではない。うみたま私が最初にログインイベントを行い、ツイッターを付与するアプリケーションアクセス.その後、保存の認証トークンのとauthVerifierい再利用することも可能でした。
あらゆるアイデアで何が悪いのでしょうか。
更新: 私のコード:
TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(tokens, txtComment.Text);
if (tweetResponse.Result == RequestResult.Success)
lblMessage.Text = "Twitter status successfully posted.";
else
lblMessage.Text = string.Format("Twitter status update failed with Error: '{0}'",
tweetResponse.ErrorMessage);
びエラーメッセージ: "無効/終了しましたトークン".
解決
あなたは間違った値を格納しています。 authTokenのと検証値がすぐにOAuthUtility.GetAccessToken(...)を使用してアクセストークンに交換する必要があります。そのメソッドから返されるアクセストークンはTwitterizerに格納され、供給されるべきものである。
-Ricky
Twitterizer著者
他のヒント
私はC#/。NETから、単純なステータス更新を行うことができると思ったが、大きなライブラリを埋め込みたいしませんでした。
だから私はありません小さな OAuth.Managerクラスを書きましたこのようなもの。
これは、ここで説明しています:
OAuthの検証と.NET の
更新ステータスにサンプルコード:
var oauth = new OAuth.Manager();
oauth["consumer_key"] = CONSUMER_KEY;
oauth["consumer_secret"] = CONSUMER_SECRET;
oauth["token"] = your_stored_access_token;
oauth["token_secret"] = your_stored_access_secret;
var url = "http://api.twitter.com/1/statuses/update.xml?status=Hello+World";
var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Headers.Add("Authorization", authzHeader);
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
MessageBox.Show("There's been a problem trying to tweet:" +
Environment.NewLine +
response.StatusDescription +
Environment.NewLine +
Environment.NewLine +
"You will have to tweet manually." +
Environment.NewLine);
}
を通じて初めて、あなたはトークンと秘密のアクセスを取得する必要があります。これは、このコードで始まる多段階プロセスで行われる
var oauth = new OAuth.Manager();
oauth["consumer_key"] = MY_APP_SPECIFIC_KEY;
oauth["consumer_secret"] = MY_APP_SPECIFIC_SECRET;
oauth.AcquireRequestToken("https://api.twitter.com/oauth/request_token", "POST");
ステップ2 https://api.twitter.com/oauth/authorize?oauth_token=XXXX
ことで、この場合はアクセス可能、XXXXは、実際に受信したトークンに置き換えられている訪問oauth["token"]
に**ユーザーに伝えることです。ステップ3 WebページからPINをグラブ(CTRL-C)をユーザーに伝え、あなたがトークンの別のタイプを取得するには、ピンを使用してあなたのアプリに貼り付けすることです。
より良い方法は、埋め込まれたWebBrowserコントロールをWindowsフォームを使用することにより、そのWeb UIシーケンスを自動化することです。あなたが適切な値に、そのコントロールのUrlプロパティを設定すると、それはあなた自身のアプリのメインフォームの内側に、あなたのためにそのWebページを表示します。また、あなたがPINを取得一部を自動化することができます。これは、ユーザーのコンテキストスイッチを低減し、理解する事が簡単になります。
とにかく、あなたがピンと、ステップ4:
oauth.AcquireAccessToken("https://api.twitter.com/oauth/access_token",
"POST",
pin);
...これは、別のHTTP RESTリクエストを送信し、それを返すときに、トークンとシークレット、oauth["token"]
とoauth["token_secret"]
で利用できるaccesssています。
ウェブUIを持つこの承認のものは、1回だけで済みます。あなたがアクセストークンとシークレットを取得した後、はの後、あなたはそれらを保存し、再利用することができますそれら。彼らは無期限、Twitterは述べています。
あなたは、ステータスの更新を送信するに進むことができます...
var url = "http://api.twitter.com/1/statuses/update.xml?status=Hello+World";
var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
...
...上記のようにます。
私は私が遅く、ゲームが作成したend-to-endのビデオチュートリアルの姿をしています:私が作成したアプリケーションdev.twitter.comイtwitterizer用nuget書、コードの取扱いは、oauth最後に、コードを書くためのアクセストークンを受けたらtwitterへのツイート
ビデオ: http://www.youtube.com/watch?v=TGEA1sgMMqU
チュートリアル: http://www.markhagan.me/Samples/Grant-Access-And-Tweet-As-Twitter-User-ASPNet
コードできない場合にはなwanをこのページ):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Twitterizer;
namespace PostFansTwitter
{
public partial class twconnect : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var oauth_consumer_key = "YOUR_CONSUMER_KEY_HERE";
var oauth_consumer_secret = "YOUR_CONSUMER_SECRET_KEY_HERE";
if (Request["oauth_token"] == null)
{
OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
oauth_consumer_key,
oauth_consumer_secret,
Request.Url.AbsoluteUri);
Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}",
reqToken.Token));
}
else
{
string requestToken = Request["oauth_token"].ToString();
string pin = Request["oauth_verifier"].ToString();
var tokens = OAuthUtility.GetAccessToken(
oauth_consumer_key,
oauth_consumer_secret,
requestToken,
pin);
OAuthTokens accesstoken = new OAuthTokens()
{
AccessToken = tokens.Token,
AccessTokenSecret = tokens.TokenSecret,
ConsumerKey = oauth_consumer_key,
ConsumerSecret = oauth_consumer_secret
};
TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
accesstoken,
"Testing!! It works (hopefully).");
if (response.Result == RequestResult.Success)
{
Response.Write("we did it!");
}
else
{
Response.Write("it's all bad.");
}
}
}
}
}