- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 iOS 的 Facebook 集成来允许用户使用他们的 Facebook 帐户登录。
我在获取用户全名时遇到问题。
我正在创建 ACAccountTypeIdentifierFacebook
类型的 ACAccount
。
经过一些搜索,我发现了这个小片段来获取全名:
// account is an ACAccount instance
NSDictionary *properties = [account valueForKey:@"properties"];
NSString *fullName = properties[@"fullname"];
我测试了它,它起作用了。它适用于多种设备。
然后我们将它发送给我们的客户,他安装了它,但没有用。
经过几天的测试,我从同事那里得知了发生在 iPhone 上的错误。
快速调试后,我发现 fullname
键不存在。取而代之的是另外两个键,ACPropertyFullName
和 ACUIAccountSimpleDisplayName
。
现在我获取全名的代码是:
NSDictionary *properties = [account valueForKey:@"properties"];
NSString *nameOfUser = properties[@"fullname"];
if (!nameOfUser) {
nameOfUser = properties[@"ACUIAccountSimpleDisplayName"];
if (!nameOfUser) {
nameOfUser = properties[@"ACPropertyFullName"];
}
}
所以我的问题其实分为三个部分:
uid
键是否可能发生同样的事情?如果是,存在哪些可能的键?
还有其他的键可以获取全名吗?
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/
我正在使用 iOS 的 Facebook 集成来允许用户使用他们的 Facebook 帐户登录。 我在获取用户全名时遇到问题。 我正在创建 ACAccountTypeIdentifierFaceboo
我是一名优秀的程序员,十分优秀!