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

c# LinqtoTwitter getting ScreenName/UserID from connection context

我几乎 post 都读过 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?

干杯,

克里斯

当您第一次授权时,IAuthorizerScreenNameUserID 将被填充:

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

如果您要预加载所有 4 个凭据,LINQ to Twitter 会短路以节省时间、带宽和用户的烦恼,因为它不会再次经过授权过程。副作用是您没有得到 ScreenNameUserID,因为它们是授权的产物。因此,如果您在初始授权后保存了某人的密钥,那么您可以在后续查询中再次使用它们,然后在那个时候也获取 ScreenNameUserID

当然你还有另一种方式获得ScreenNameUserID。您可以执行 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);
        }

ScreenNameUserID 位于从 VerifyCredentials查询。它们分别被命名为 ScreenNameResponse**UserIDResponse** 属性。