2016-04-08 6 views
3

Ich habe fast jeden Beitrag mit einem Codebeispiel im LinqToTwitter documentation gelesen. Ich möchte die Benutzer-ID oder des Nutzers Screen erhalten einen Anruf, wie dies für den Benutzer zu machen, die angemeldet ist.C# LinqtoTwitter bekomme ScreenName/UserID vom Verbindungskontext

var friendList = 
      await 
      (from friend in twitterCtx.Friendship 
      where friend.Type == FriendshipType.FriendIDs && 
        friend.ScreenName == "JoeMayo" 
      select friend) 
      .SingleOrDefaultAsync(); 

Aber alles, was ich sind Abfragen wie oben finden können, die eine hartcodierte Zeichenfolge für Screen haben.

Woher bekomme ich meinen eigenen ScreenName/UserID aus dem twitterCtx?

Cheers,

Chris

Antwort

3

Wenn Sie zuerst genehmigen, die ScreenName und UserID des IAuthorizer wird bevölkert:

  var credentials = auth.CredentialStore; 
     string oauthToken = credentials.OAuthToken; 
     string oauthTokenSecret = credentials.OAuthTokenSecret; 
     string screenName = credentials.ScreenName; 
     ulong userID = credentials.UserID; 

Wenn Sie alle 4 Anmeldeinformationen Vorbelastung sind, LINQ zu Twitter-Kurzschlüssen, um Zeit, Bandbreite und Benutzerbelästigung zu sparen, indem der Autorisierungsprozess nicht erneut durchlaufen wird. Der Nebeneffekt ist, dass Sie die ScreenName und UserID nicht bekommen, weil diese ein Produkt der Autorisierung sind. Wenn Sie also nach der ersten Autorisierung die Schlüssel eines anderen Benutzers speichern, können Sie sie bei nachfolgenden Abfragen erneut verwenden. Nehmen Sie dann auch die Nummern ScreenName und UserID.

Natürlich haben Sie eine andere Möglichkeit, ScreenName und UserID zu erhalten. Sie können eine VerifyCredentials Abfrage, wie dies zu tun:

 try 
     { 
      var verifyResponse = 
       await 
        (from acct in twitterCtx.Account 
        where acct.Type == AccountType.VerifyCredentials 
        select acct) 
        .SingleOrDefaultAsync(); 

      if (verifyResponse != null && verifyResponse.User != null) 
      { 
       User user = verifyResponse.User; 

       Console.WriteLine(
        "Credentials are good for {0}.", 
        user.ScreenNameResponse); 
      } 
     } 
     catch (TwitterQueryException tqe) 
     { 
      Console.WriteLine(tqe.Message); 
     } 

Die ScreenName und UserID sind in der User Entität der User Eigenschaft auf die Account Stelle zurückgegeben von der VerifyCredentials Abfrage. Sie heißen ScreenNameResponse und **UserIDResponse** Eigenschaften.