FaceBook Messenger SDK如何获取用户姓名

7

我正在开发一款通讯应用程序,主要参考这里的文档

唯一需要注意的是如何向你分享内容的人传递用户信息?

从文档中看来,FBSDKMessengerURLHandlerReplyContext可能包含userID。

NSSet *userIds = context.userIDs

然而,我如何使用userID获取用户信息呢?或者这种方法是否正确来获取用户信息?

看起来这个任务是可行的。 这款游戏就是这样做的

它可以在第一个屏幕上显示用户信息,而不必要求用户登录。

关于如何实现这一点,有什么想法或帮助吗?

2个回答

5
如果用户ID来自已在您的应用程序中进行身份验证的用户,则可以使用图形API实现,就像Facebook文档上所说的那样:
“可以使用Facebook SDK和Graph API(https://developers.facebook.com/docs/graph-api)使用用户ID查询名称、照片和其他数据。这将仅包含已通过Facebook帐户登录您的应用程序的用户的ID。”
以下是如何使用用户ID调用图形API的一些代码:
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                      initWithGraphPath:[NSString stringWithFormat:@"/%@", {userID-goes-here}]
                                      parameters:@{@"fields":@"name,id,picture,gender,birthday,email"}
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                              id result,
                                              NSError *error) {
     if (!error){
          NSLog(@"result: %@",result);           
     }
}];

这个请求的结果看起来像这样:
 {
    birthday = "06/24/1981";
    email = "XXXXXX@hotmail.com";
    gender = male;
    id = 67XXXXX39;
    name = "Adriano Spadoni";
    picture = {
        data = {
            "is_silhouette" = 0;
             url = "https://fbcdn-prof... ...jpg";
        };
    };
}

请记住,有些字段可能为空。

恐怕您需要逐个请求用户,如果有人知道如何同时询问一批用户,请告诉我们。

但是

如果您想从尚未安装您的应用程序的用户那里获取信息,则需要:

 FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: ["fields":"installed,id,name,picture.width(1000)"]).startWithCompletionHandler({ (connection, result, err) -> Void in
                    if err == nil {
                        print(result)
                    }
                })

据我所知,使用FBMessengerSDK不需要进行身份验证。您可以直接分享内容。如果您查看上面的游戏链接,您会发现它以某种方式获取了用户信息,而不需要应用程序身份验证或登录。 - N0mi
我添加了一些更多的信息,你可以使用“可标记的朋友”来完成,我刚刚测试了一下,你可以得到名字和图片=) - Adriano Spadoni
获取以下错误“message =“必须使用活动访问令牌才能查询有关当前用户的信息。”;” 是否有任何方法可以在用户登录应用程序之前获取此令牌? - N0mi
不,用户必须登录才能获取令牌。Tulleb关于“可标记的朋友”存在风险是正确的。 - Adriano Spadoni
真正的意思是,只有在你的朋友回复你后,你才能看到他的信息。好的,让我按照你提到的步骤去做。 - N0mi
显示剩余3条评论

0

嗨,Piyush,我差点犯了同样的错误,认为他在问“用户名”,但实际上他说的是“用户名称”(看到空格了吗?)他在标题中拼错了,应该是“用户的名称”。无论如何,谢谢你提供的信息,你是对的,“用户名”在Facebook上已经消失了。 - Adriano Spadoni
谢谢drix,我已经修复了标题。 - N0mi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接