ios - Twitter 屏幕名称在 Parse 中返回 null

标签 ios objective-c twitter parse-platform

通过 Twitter 登录并尝试获取用户屏幕名称。屏幕名称每次都会产生一个空值。有什么想法吗?

PFUser *currentUser = [PFUser currentUser];
    [PFTwitterUtils logInWithBlock:^(PFUser *user, NSError *error) {
        if (!user) {
            NSLog(@"Uh oh. The user cancelled the Twitter login.");
            return;
        } else if (user.isNew) {
            twitterScreenName = [PFTwitterUtils twitter].screenName;
            NSLog(@"%@",[PFTwitterUtils twitter].screenName);
            NSString * requestString = [NSString stringWithFormat:@"https://api.twitter.com/1.1/users/show.json?screen_name=%@", twitterScreenName ];

                                        NSURL *verify = [NSURL URLWithString:requestString];
                                        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:verify];
                                        [[PFTwitterUtils twitter] signRequest:request];

                                        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
                NSError *error;
                NSDictionary* result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
                if (!error) {

                   user.username =twitterScreenName;
                   user[@"name"]= result[@"name"];
                    user[@"profileDescription"] = result[@"description"];
                  user[@"imageURL"] = [result[@"profile_image_url_https"] stringByReplacingOccurrencesOfString:@"_normal" withString:@"_bigger"];
                    [user saveEventually];
                }
            }];
          [self performSegueWithIdentifier: @"username" sender: self];

        }

最佳答案

这是我的做法:

[PFTwitterUtils logInWithBlock:^(BOOL succeeded, NSError *error) {
    if ([PFTwitterUtils isLinkedWithUser:[PFUser currentUser]]) {
        NSURL *info = [NSURL URLWithString:@"https://api.twitter.com/1.1/account/settings.json"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:info];
        [[PFTwitterUtils twitter] signRequest:request];
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            if (!!data) {
                NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
                NSString *userName = dict[@"screen_name"];
                userName = [userName stringByReplacingOccurrencesOfString:@"Twitter:" withString:@""];

                PFUser *user = [PFUser currentUser];
                user[@"Twitter"] = userName;
                [user saveEventually];
            } else {
              //uh oh, no twitter response
            }
        }];
    } else {
        //uh oh, failed login
    }
}];

关于ios - Twitter 屏幕名称在 Parse 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29581050/

相关文章:

ios - 未保存到核心数据数据库的对象

ios - Swift:后端排序关系对象

php - 使用 Ajax、MySQL 和 PHP 实现跟随系统

ios - 在不删除其 View 的情况下隐藏 iOS 中的状态栏

javascript - facebook 和 twitter 插件位置

android - 由于更新限制错误,无法将图像发布到 Twitter

ios - 如何对 iOS 项目中的工具栏项进行分组?

ios - 由于内存问题而终止 TLViewHierarchyTool checkUIView :block: loop

ios - NSURLErrorDomain 中的代码是什么意思?

ios - 禁用 UIPageViewController 反弹