Je veux publier une image sur mon compte Twitter via C#. Je peux obtenir le code jeton d'accès, tout va bien mais j'étudié un code PHPComment poster une image sur Twitter en C#
$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
Dans le code PHP, la classe OAuth
a une méthode de requête. Côté C#, j'ai utilisé la librairie Twitterizer qui n'a pas de méthode de requête dans la classe OAuth
. Ensuite, j'ai utilisé Webclient
au lieu de la méthode de demande. Mais j'ai besoin de quelques informations d'identification pour publier des données. Mais je ne sais pas quoi/pourquoi j'utilise un nom d'utilisateur et un mot de passe. En fait, je ne veux pas utiliser d'informations d'identification. Que puis-je utiliser à la place des informations d'identification?
Le deuxième problème est, je reçois toujours des erreurs autorisées (401) ici est le code
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;
}
Alors, où est le problème dans mon code?
A 401 est un 401. Je soupçonne UNAME ou passe est invalide ou le type auth utilisé n'est pas supporté. Utilisez un outil comme fiddler2 pour jeter un coup d'oeil. (On pourrait imaginer que OAuth devrait être utilisé * à la place * de HTTP Auth .. donc le paramètre client.Credentials ne fait qu'aggraver le problème.) –
Que dois-je faire? – user1350342
Trouver un tutoriel sur la façon d'utiliser Twitter à partir de C#? Tu n'es pas la première personne à avoir essayé ça ... –