C# を使用して Twitter アカウントに画像を投稿したいと考えています。アクセス トークン コードを取得できます。すべて問題ありませんが、PHP コードを調査しました
$tmhOAuth = new tmhOAuth(array(
'consumer_key' => OAUTH_CONSUMER_KEY,
'consumer_secret' => OAUTH_CONSUMER_SECRET,
'user_token' => $oauth_token,
'user_secret' => $oauth_token_secret,
));
$image = "{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}";
$code = $tmhOAuth->request('POST', 'https://upload.twitter.com/1/statuses/update_with_media.json',
array(
'media[]' => "@{$image}",
'status' => " " . $status, //A space is needed because twitter b0rks if first char is an @
'lat' => $lat,
'long' => $long,
),
true, // use auth
true // multipart
PHP コードでは、OAuth
クラスに request メソッドがあります。OAuth
C# 側では、クラス内にリクエスト メソッドを持たない Twitterizer ライブラリを使用しました。次にWebclient
、リクエストメソッドの代わりに使用しました。しかし、データを投稿するには資格情報が必要です。しかし、ユーザー名とパスワードを何に、なぜ使用するのかわかりません。実際には、資格情報を使用したくありません。認証情報の代わりに何を使用できますか?
2 番目の問題は、常に承認済みエラー (401) が発生することです。コードは次のとおりです。
OAuthTokenResponse responseToken = OAuthUtility.GetAccessToken(ConsumerKey, ConsumerSecret, oauth_token, oauth_verifier);
OAuthTokens accessToken = new OAuthTokens();
accessToken.AccessToken = responseToken.Token;
accessToken.AccessTokenSecret = responseToken.TokenSecret;
accessToken.ConsumerKey = ConsumerKey;
accessToken.ConsumerSecret = ConsumerSecret;
TwitterResponse<TwitterUser> twitterResponse = TwitterAccount.VerifyCredentials(accessToken);
System.Net.ServicePointManager.Expect100Continue = false;
if (twitterResponse.Result != RequestResult.Unauthorized)
{
try
{
string URL = "https://upload.twitter.com/1/statuses/update_with_media.json";
WebClient client = new WebClient();
client.Credentials = new System.Net.NetworkCredential(uName, pass);
NameValueCollection postData = new NameValueCollection();
postData.Add("status", status);
postData.Add("media[]", Encoding.ASCII.GetString(bytesOfImage));
byte[] b = client.UploadValues(URL, "POST", postData); // 401 error.
}
catch (Exception e)
{
return e.Message;
}
では、私のコードのどこに問題があるのでしょうか?