2013-05-21 186 views
0

這是我的代碼Linq to Twitter狀態更新

由於某種原因,我無法更新狀態我收到此錯誤。

您的憑據不允許在

VAR鳴叫= twitterCtx.UpdateStatus( 「世界,你好」)訪問該資源;

var auth = new ApplicationOnlyAuthorizer 
     { 
      Credentials = new InMemoryCredentials 
      { 
       ConsumerKey = "", 
       ConsumerSecret = "" 
      } 
     }; 

     auth.Authorize(); 
     //auth.Invalidate(); 
     var twitterCtx = new TwitterContext(auth); 
     var tweet = twitterCtx.UpdateStatus("Hello world"); 

我檢查了我的ConsumerKey和Secret是正確的,我也給了我的應用程序讀寫acccess。我能夠獲得以前的狀態,用戶名,但我只是無法tweet一個新的狀態

回答

0

有名爲UpdateStatus的TwitterContext,你會使用這樣的方法:

twitterCtx.UpdateStatus(" Your text goes here "); 

你」您需要使用OAuth進行授權才能使用此功能,因此請在演示中使用PIN選項。獲得授權後,您可以致電UpdateStatus。

+0

從哪裏獲得PIN碼選項? –

+0

我怎麼知道狀態是否在Twitter上更新。 –

1

應用程序只有授權只能執行應用程序級別的操作。這與其他允許您代表用戶操作的授權人不同。邏輯是用戶擁有一個賬戶,但一個應用程序沒有。因此,您無法代表應用程序發送推文,因爲推文無法分配到任何地方。但是,如果您代表用戶發送推文,推文會進入該用戶的狀態列表(他們的時間表)。

LINQ to Twitter有各種授權人,您可以通過下載特定於您正在使用的技術的樣本來查看它們。可下載的源代碼也有樣本。下面是如何使用PIN授權的例子:

static ITwitterAuthorizer DoPinOAuth() 
    { 
     // validate that credentials are present 
     if (ConfigurationManager.AppSettings["twitterConsumerKey"].IsNullOrWhiteSpace() || 
      ConfigurationManager.AppSettings["twitterConsumerSecret"].IsNullOrWhiteSpace()) 
     { 
      Console.WriteLine("You need to set twitterConsumerKey and twitterConsumerSecret in App.config/appSettings. Visit http://dev.twitter.com/apps for more info.\n"); 
      Console.Write("Press any key to exit..."); 
      Console.ReadKey(); 
      return null; 
     } 

     // configure the OAuth object 
     var auth = new PinAuthorizer 
     { 
      Credentials = new InMemoryCredentials 
      { 
       ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"], 
       ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"] 
      }, 
      AuthAccessType = AuthAccessType.NoChange, 
      UseCompression = true, 
      GoToTwitterAuthorization = pageLink => Process.Start(pageLink), 
      GetPin =() => 
      { 
       // this executes after user authorizes, which begins with the call to auth.Authorize() below. 
       Console.WriteLine("\nAfter authorizing this application, Twitter will give you a 7-digit PIN Number.\n"); 
       Console.Write("Enter the PIN number here: "); 
       return Console.ReadLine(); 
      } 
     }; 

     // start the authorization process (launches Twitter authorization page). 
     auth.Authorize(); 
     return auth; 
    } 

這個方法返回PinAuthorizer的一個實例,身份驗證,你可以使用它是這樣的:

PinAuthorizer auth = DoPinAuth(); 
var ctx = new TwitterContext(auth); 
ctx.UpdateStatus("Hello LINQ to Twitter!"); 

*更新*

上面的代碼是從舊版本的LINQ到Twitter。下面是如何與新的異步版本做一個例子:

static IAuthorizer DoPinOAuth() 
    { 
     var auth = new PinAuthorizer() 
     { 
      CredentialStore = new InMemoryCredentialStore 
      { 
       ConsumerKey = ConfigurationManager.AppSettings["consumerKey"], 
       ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"] 
      }, 
      GoToTwitterAuthorization = pageLink => Process.Start(pageLink), 
      GetPin =() => 
      { 
       Console.WriteLine(
        "\nAfter authorizing this application, Twitter " + 
        "will give you a 7-digit PIN Number.\n"); 
       Console.Write("Enter the PIN number here: "); 
       return Console.ReadLine(); 
      } 
     }; 

     return auth; 
    } 

然後你就可以使用它像這樣:

 var auth = DoPinOAuth(); 
     await auth.AuthorizeAsync(); 
     var twitterCtx = new TwitterContext(auth); 
     await twitterCtx.TweetAsync("Hello LINQ to Twitter!"); 

欲瞭解更多信息,你可以找到DocumentationSource代碼。源代碼在New \ Demos文件夾中有演示。

+0

LinqToTwitter API已經改變(現在所有的調用異步和破壞名稱更改);這一切都不再有效,LinqToTwitter網站上的示例/源代碼都有相同的錯誤。如果有人知道更新的版本,請發佈。 – Rudy

+0

@Rudy我更新了我的答案。 API文檔(https://linqtotwitter.codeplex.com/wikipage?title=Making%20API%20Calls&referringTitle=Documentation)包含2.x和3.x版本的查詢,以便您能夠查看大小寫你會遇到以前的代碼示例。 –