c#LinqtoTwitter从连接上下文获取ScreenName / UserID

时间:2016-04-08 08:14:15

标签: c# linq linq-to-twitter

我已经在LinqToTwitter documentation中使用代码示例阅读了几乎所有帖子。 我想让UserID或用户的ScreenName为登录的用户进行这样的调用。

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

但我能找到的只是上面的查询,它们有一个用于ScreenName的硬编码字符串。

我在哪里可以从twitterCtx中获取自己的ScreenName / UserID?

干杯,

克里斯

1 个答案:

答案 0 :(得分:3)

首次授权时,ScreenName的{​​{1}}和UserID将被填充:

IAuthorizer

如果您预先加载所有4个凭据,LINQ to Twitter短路可以通过不再通过授权过程来节省时间,带宽和用户烦恼。副作用是您无法获得 var credentials = auth.CredentialStore; string oauthToken = credentials.OAuthToken; string oauthTokenSecret = credentials.OAuthTokenSecret; string screenName = credentials.ScreenName; ulong userID = credentials.UserID; ScreenName,因为这些是授权的产物。因此,如果您在初始授权后保存某人的密钥,那么您可以在后续查询中再次使用它们,那么此时也会抓取UserIDScreenName

当然,您还有另一种获取UserIDScreenName的方法。您可以执行UserID查询,如下所示:

VerifyCredentials

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); } ScreenName位于UserID查询返回的User实体的User属性的Account实体中。它们分别命名为 VerifyCredentials ScreenNameResponse 属性。