我一直在我的iPhone应用程序中使用Facebook SDK,使用放置在Interface Builder XIB文件中的FBLoginView登录用户,并在视图控制器.m文件的委托方法中初始化,如下所示:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.loginView = [self.loginView initWithReadPermissions: @[@"public_profile", @"user_friends"]];
self.loginView.delegate = self;
}
return self;
}
我尝试在用户登录后获取好友列表:
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
NSArray* friends = [result objectForKey:@"data"];
}
我有两个Facebook帐户使用我的应用程序,因此一个人应该能够在此请求中检索另一个。它正常工作并检索朋友直到今天,当我试图更改应用程序名称。现在,friends
最终成为一个空数组。我尝试删除然后在两个帐户上重新授权应用。我确保这两个帐户都是Facebook上的朋友。我正准备将我已完成的应用程序提交到App Store审核时,我已经陷入困境和选择之中了!
Facebook上的我的应用程序ID和我的app-Info.plist中的我的FaceBookAppID是相同的,从未改变过。之前和现在之间的唯一区别:我在developers.facebook.com上更改了我的应用程序包ID,使其与我的PLIST中的Bundle Identifier相同。我的PLIST中的我的显示名称和我的FacebookDisplayName都被更改了,现在都是一样的。
答案 0 :(得分:1)
我找到了答案。我在错误的地方寻找;这个问题与Facebook上的名称变更无关。正如我发现的那样,我的问题中的这段代码是在XIB已经在init
上调用loginView
后调用的,默认情况下它只给出了公共配置文件。之后调用initWithReadPermissions
并未添加任何更多权限;事实上,这个电话似乎被忽略了:
更新:实际上,回过头来看,我认为问题是我在initWithReadPermissions
之前调用了FBLoginView
,然后才分配。新手我的错误。
self.loginView = [self.loginView initWithReadPermissions: @[@"public_profile", @"user_friends"]]; // loginView is an FBLoginView
但如果我将其放入viewDidLoad
并删除其他代码,则此方法有效:
self.loginView.readPermissions = @[@"user_friends"];
我必须在名称更改后才注意到此问题,因为我从帐户中删除了应用程序并重新添加了它,删除了在我为此视图控制器使用XIB之前已授予的旧user_friends权限。然后我责备了它的名称更改,并在Facebook开发网站上毫无结果地搜索。