从 parse 获取 Facebook 分数上的朋友

Posted

技术标签:

【中文标题】从 parse 获取 Facebook 分数上的朋友【英文标题】:Getting friends on facebook's scores from parse 【发布时间】:2014-01-03 19:22:03 【问题描述】:

所以我终于让我的应用程序让用户登录 Facebook 并进行解析。让我们将我的应用称为游戏,即使它不是游戏,并且假设我上传了某人每次玩游戏时获得的最新分数。所以我所做的是上传“分数”以在用户下解析。现在,我希望用户能够看到 Facebook 分数上的朋友。所以,我让用户登录了,现在我如何检查他们的朋友是否在使用我的“游戏”,然后将他们的电子邮件与解析中的电子邮件进行匹配以获得分数?到目前为止,我可以获取登录用户的好友 ID。

顺便说一句。用户必须登录 facebook 并为我的应用创建一个解析帐户

我知道我必须使用查询来从解析中获取内容,我想我的主要问题是如何获取 facebook 用户的电子邮件?

这就是我获取他们的身份的方式:

- (void)getFacebookInfo 
    [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
        if (!error) 
            // Set user's information
            NSString *facebookId = [result objectForKey:@"id"];
            NSString *facebookName = [result objectForKey:@"name"];

            if (facebookName && facebookName.length != 0) 
                [[PFUser currentUser] setObject:facebookName forKey:@"displayName"];
            
            if (facebookId && facebookId.length != 0) 
                [[PFUser currentUser] setObject:facebookId forKey:@"facebookId"];
            

            [[PFUser currentUser] saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) 
                // Get user's friend information
                [FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
                    if (!error) 
                        NSArray *data = [result objectForKey:@"data"];
                        NSMutableArray *facebookIds = [[NSMutableArray alloc] initWithCapacity:data.count];
                        for (NSDictionary *friendData in data) 
                            [facebookIds addObject:[friendData objectForKey:@"id"]];
                        

                        [[PFUser currentUser] setObject:facebookIds forKey:@"facebookFriends"];
                        [[PFUser currentUser] saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) 
                            // We're in!
                            NSLog(@"%@", facebookName);
                            [self dismissViewControllerAnimated:YES completion:NULL];
                        ];
                     else 
                        [self showErrorAlert];
                    
                ];
            ];
         else 
            [self showErrorAlert];
        
    ];

【问题讨论】:

【参考方案1】:

为了在startForMyFriendsWithCompletionHandler 的完成处理程序中获取 Facebook 用户的电子邮件地址,请使用:

[FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
    if (!error) 
        NSArray *data = [result objectForKey:@"data"];
        for (NSDictionary *friendData in data) 

            //This is each friend's email address
            NSString *aFriendsEmail = [friendData objectForKey:@"email"];

        
    
];

【讨论】:

当我尝试登录好友电子邮件时,它会记录为空。但是,它会记录其他信息,但我仍然需要一封电子邮件。还有其他方法吗? 当你记录“friendData”时会发生什么,例如 NSLog(@"%@",friendData); ? 我得到了很多信息,比如用户名和用户 ID。但我需要他们的电子邮件。

以上是关于从 parse 获取 Facebook 分数上的朋友的主要内容,如果未能解决你的问题,请参考以下文章

在 Parse 中使用 FBgraphUser 从 Facebook 获取用户电子邮件

获取我和我的朋友的帖子(Wall Facebook)

Facebook graph API V2.0 - 如何获取组上下文? (我的朋友的成员)

使用 Swift 和 Parse 获取 Facebook UserData 时出现致命错误

从 IOS 应用程序登录 Facebook

如何使用 swift 从 Parse 上的用户指针中检索数据