gpt4 book ai didi

iOS:ACAccountTypeIdentifierFacebook 的用户全名

转载 作者:行者123 更新时间:2023-11-29 13:01:15 26 4
gpt4 key购买 nike

我正在使用 iOS 的 Facebook 集成来允许用户使用他们的 Facebook 帐户登录。

我在获取用户全名时遇到问题。

我正在创建 ACAccountTypeIdentifierFacebook 类型的 ACAccount

经过一些搜索,我发现了这个小片段来获取全名:

// account is an ACAccount instance
NSDictionary *properties = [account valueForKey:@"properties"];
NSString *fullName = properties[@"fullname"];

我测试了它,它起作用了。它适用于多种设备。

然后我们将它发送给我们的客户,他安装了它,但没有用。

经过几天的测试,我从同事那里得知了发生在 iPhone 上的错误。

快速调试后,我发现 fullname 键不存在。取而代之的是另外两个键,ACPropertyFullNameACUIAccountSimpleDisplayName

现在我获取全名的代码是:

NSDictionary *properties = [account valueForKey:@"properties"];
NSString *nameOfUser = properties[@"fullname"];
if (!nameOfUser) {
nameOfUser = properties[@"ACUIAccountSimpleDisplayName"];
if (!nameOfUser) {
nameOfUser = properties[@"ACPropertyFullName"];
}
}

所以我的问题其实分为三个部分:

  1. uid 键是否可能发生同样的事情?如果是,存在哪些可能的键?

  2. 还有其他的键可以获取全名吗?

  3. Twitter 上是否发生同样的事情,或者它总是使用相同的 key ?

谢谢大家

最佳答案

您在 valueForKey:@"properties" 调用中所做的是访问私有(private)属性,这会使您的应用程序被 Apple 拒绝。

如果您的项目是 iOS 7 项目,您可以在 ACAccount 类上使用名为 userFullName 的新属性。来自 ACAccount.h:

// For accounts that support it (currently only Facebook accounts), you can get the user's full name for display
// purposes without having to talk to the network.
@property (readonly, NS_NONATOMIC_IOSONLY) NSString *userFullName NS_AVAILABLE_IOS(7_0);

或者,您可以使用 Graph API查询 current user使用 Social framework :

SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:[NSURL URLWithString:@"https://graph.facebook.com/me"]
parameters:nil];
request.account = account; // This is the account from your code
[request performRequestWithHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error == nil && ((NSHTTPURLResponse *)response).statusCode == 200) {
NSError *deserializationError;
NSDictionary *userData = [NSJSONSerialization JSONObjectWithData:data options:0 error:&deserializationError];

if (userData != nil && deserializationError == nil) {
NSString *fullName = userData[@"name"];
NSLog(@"%@", fullName);
}
}
}];

关于iOS:ACAccountTypeIdentifierFacebook 的用户全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19714824/

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