【问题标题】:Get current user's info from Twitter API从 Twitter API 获取当前用户的信息
【发布时间】:2011-03-08 21:14:15
【问题描述】:

我正在构建一个 Twitter 应用程序(使用 oAuth),但我找不到任何关于如何获取当前用户信息的信息。

当前用户是指授予我的应用权限以及应用向 API 发出请求的用户。

有什么建议吗?

【问题讨论】:

    标签: twitter


    【解决方案1】:

    【讨论】:

    【解决方案2】:

    使用 oAuth,您可以调用以从您的 TwitterOAuth 对象获取用户信息。

    例如如果

    $oauth = new TwitterOAuth([keys here]);
    
    $credentials = $oauth->get('account/verify_credentials');
    
    echo "Connected as @" . $credentials->screen_name ."\n";
    

    【讨论】:

      【解决方案3】:

      关于 iOS 的解决方案:

      1) 如果您的设备上有 Twitter 帐户(即 ACAccount 来自 ACAccountStore),您只需将其附加到 SLRequest 并从返回的字典中获取所有用户信息:

      NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/account/verify_credentials.json"];
      NSMutableDictionary *params = [NSMutableDictionary new];
      [params setObject:[Twitter sharedInstance].session.userID forKey:@"user_id"];
      [params setObject:@"0" forKey:@"include_entities"];
      [params setObject:@"1" forKey:@"skip_status"];
      [params setObject:@"1" forKey:@"include_email"];
      
      SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:url parameters:params];
      [request setAccount:twitterAccount]; //one of the Twitter Acc
      [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
          if (responseData) {
              NSDictionary *twitterData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:NULL];
              });
      
          }else {
              NSLog(@"Error while downloading Twitter user data: %@", error);
          }
      }];
      

      2) 否则 - 您需要发送 OAuth (X-Auth) 用户凭据。最简单的方法是使用 TWTROAuthSigning 类来检索 OAuth 参数:

      TWTROAuthSigning *oauthSigning =
                               [[TWTROAuthSigning alloc]
                                initWithAuthConfig:
                                [Twitter sharedInstance].authConfig
                                authSession:session];
                               NSDictionary *authHeaders =
                               [oauthSigning OAuthEchoHeadersToVerifyCredentials];
      

      然后发送附加凭据作为标头字段的普通请求:

        NSString *oauthParameters = authHeaders[@"X-Verify-Credentials-Authorization"];
                               NSString *urlString = authHeaders[@"X-Auth-Service-Provider"];
                               NSMutableURLRequest *request =
                               [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
                               request.allHTTPHeaderFields = @{@"Authorization":oauthParameters};
                               [request setHTTPMethod:@"GET"];
                               NSOperationQueue *queue = [[NSOperationQueue alloc]init];
                               [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response,NSData *data,NSError *error){
                                    NSDictionary *twitterData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:NULL];
                               }];
      

      如果您支持旧版本的 Twitter SDK 或搜索更多选项,我建议您查看STTwitter lib

      【讨论】:

      • 你能分享获取推特关注者列表的代码吗?目前,当我尝试 requestAccessToAccountsWithType 时,它​​总是返回 false
      • @Anjalijariwala 你有什么例子可以获取 twitter 帐户的个人资料详细信息,包括 emailID 。我为我的 react-native 应用程序使用了包“react-native-login-twitter”。身份验证成功,我得到了配置文件的 authToken、authTokenSecret 但电子邮件为空。是否需要第二次调用才能使用 authToken 和 authTokenSecret 获取更多个人资料信息。如果是这样,请帮忙..谢谢:)
      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 2022-01-11
        • 1970-01-01
        • 2015-02-25
        • 1970-01-01
        • 2018-10-22
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 2015-11-12
        相关资源
        最近更新 更多