gpt4 book ai didi

iphone - 如何获取给定 PFUser 的 facebook 用户名?

转载 作者:行者123 更新时间:2023-12-01 18:22:25 24 4
gpt4 key购买 nike

PFUser *aUser = [PFUser 当前用户];//可能不是当前用户 NSLog("username %@", [aUser username]);//如果不是FB用户也可以。否则它给了我一个 token 。我知道有一个 [PFUser isLinkedWithUser:aUser] 返回的是 CURRENT LOGGED USER 已链接,但 aUser 可能不是此设备中的当前用户。

这适用于当前用户:

+ (void)getUsernameWithCompletionBlock:(void(^)(NSString *username))handler {
if([PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]){ //<-
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSDictionary *userData = (NSDictionary *)result;
NSString *name = userData[@"name"];
handler(name);
}}];
} else {
handler([[PFUser currentUser] username]);
}

}

但我想要这样的东西
+(void)getUsernameWithUser:(PFUser *)user andCompletionBlock:(void(^)(NSString     *username))handler {
if([PFFacebookUtils isLinkedWithUser:user]){ //<- THIS ALWAYS RETURN FALSE
//return the real facebook username
} else {
handler([user username]);
}
}

在文档中说:isLinkedWithUser:

用户是否将其帐户链接到 Facebook。

(BOOL)isLinkedWithUser:(PFUser *)user 参数 user 用于检查 facebook 链接的用户。用户必须在此设备上登录。
有任何想法吗?

最佳答案

当您有不是当前用户的用户时,不会发送 authData。你有两个选择:

  • 每个用户都可以在 User 表中存储他们的 Facebook 用户名(以及您希望公开访问的任何其他数据)。
  • 创建一个云代码函数,该函数使用主 key 检索 authData 并查询 Facebook 用户名。

  • 对于选项二,您的云代码应该执行类似于以下的操作:
    Parse.Cloud.define("facebookAlias", function(request, response) {
    Parse.Cloud.useMasterKey();
    new Parse.Query(Parse.User).get(request.params.user_id).then(function(user) {
    var authData = user.get("authData");

    // Quit early for users who aren't linked with Facebook
    if (authData === undefined || authData.facebook === undefined) {
    response.success(null);
    return;
    }

    return Parse.Cloud.httpRequest({
    method: "GET",
    url: "https://graph.facebook.com/me",
    params: {
    access_token: authData.facebook.access_token,
    fields: "username",
    }
    });

    }).then(function(json) {
    response.success(JSON.parse(json)["username"]);

    // Promises will let you bubble up any error, similar to a catch statement
    }, function(error) {
    response.error(error);
    });
    });

    免责声明:上述代码大致来自个人项目,但已经进行了足够的调整,我不保证不会出现语法错误。

    关于iphone - 如何获取给定 PFUser 的 facebook 用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437652/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com