2012-04-23 3 views
1

C#을 통해 Twitter 계정에 이미지를 게시하고 싶습니다. 내가 액세스 토큰 코드를 얻을 수있는 모든 것이 괜찮하지만 PHP 코드에서 PHP 코드를 C#에서 Twitter에 이미지를 게시하는 방법

$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 

조사의 OAuth 클래스는 요청 메소드가 있습니다. C# 측에서는 OAuth 클래스에 요청 방법이없는 Twitterizer 라이브러리를 사용했습니다. 그런 다음 요청 방법 대신 Webclient을 사용했습니다. 그러나 데이터를 게시하려면 일부 자격 증명이 필요합니다. 그러나 나는 사용자 이름과 암호를 왜/왜 사용하는지 모르겠습니다. 사실, 어떤 자격 증명도 사용하고 싶지 않습니다. 자격 증명 대신 무엇을 사용할 수 있습니까?

두 번째 문제는 항상 승인 된 오류 (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; 
     } 

입니다 얻을 것입니다 어디 내 코드의 문제?

+0

401은 401 내가 uName의 의심되거나 패스가 잘못되었거나 인증 유형이 사용되는 지원되지 않습니다. 보십시오 fiddler2 같이 공구를보십시오. (OAuth가 HTTP Auth .. 대신에 * 사용되어야한다고 생각할 것입니다. 그래서 client.Credentials 설정은 문제를 복잡하게합니다.) –

+0

무엇을해야합니까? – user1350342

+0

C#에서 Twitter를 사용하는 방법에 대한 자습서를 찾으십니까? 넌 이걸 시도한 사람이 아니야. –

답변

1

이처럼 TweetWithMedia 방법을 사용하여, 트위터에 LINQ에서이 작업을 수행 할 수 있습니다

static void TweetWithMediaDemo(TwitterContext twitterCtx) 
    { 
     string status = "Testing TweetWithMedia #Linq2Twitter " + DateTime.Now.ToString(CultureInfo.InvariantCulture); 
     const bool possiblySensitive = false; 
     const decimal latitude = StatusExtensions.NoCoordinate; //37.78215m; 
     const decimal longitude = StatusExtensions.NoCoordinate; // -122.40060m; 
     const bool displayCoordinates = false; 

     const string replaceThisWithYourImageLocation = @"..\..\images\200xColor_2.png"; 

     var mediaItems = 
      new List<Media> 
      { 
       new Media 
       { 
        Data = Utilities.GetFileBytes(replaceThisWithYourImageLocation), 
        FileName = "200xColor_2.png", 
        ContentType = MediaContentType.Png 
       } 
      }; 

     Status tweet = twitterCtx.TweetWithMedia(
      status, possiblySensitive, latitude, longitude, 
      null, displayCoordinates, mediaItems, null); 

     Console.WriteLine("Media item sent - Tweet Text: " + tweet.Text); 
    } 

관련 문제