我一直在我的 iPhone 应用程序中使用 Facebook SDK,使用放置在 Interface Builder XIB 文件中的 FBLoginView 登录用户,并在 View Controller .m 文件的委托(delegate)方法中初始化,如下所示:
- (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 帐户使用我的应用程序,因此一个应该能够在此请求中检索另一个。直到今天我尝试更改应用程序名称时,它都运行良好并检索了 friend 。现在,friends
最终变成了一个空数组。我尝试删除然后重新授权两个帐户上的应用程序。我已确保这两个帐户都是 Facebook 上的好友。就在我正要将完成的应用程序提交给 App Store 审核时,我陷入了困境,别无选择!
我在 Facebook 上的 App ID 和我在 app-Info.plist 中的 FaceBookAppID 是相同的,从未改变过。之前和现在之间的唯一区别:我在 developers.facebook.com 上更改了我的应用程序的 bundle ID,使其与我的 PLIST 中的 Bundle Identifier 相同。我的 PLIST 中的显示名称和 FacebookDisplayName 都已更改,现在相同。
最佳答案
我找到了答案。我找错地方了;该问题与 Facebook 上的名称更改无关。正如我发现的那样,我的问题中的这段代码是在 XIB 已经在 loginView
上调用了 init
之后被调用的,默认情况下它只给它 public profile。之后调用 initWithReadPermissions
并没有添加任何权限;事实上,这个调用似乎被忽略了:
更新:实际上,回顾这一点,我认为问题在于我在我的 FBLoginView
上调用了 initWithReadPermissions
,甚至在它被分配之前。我的新手错误。
self.loginView = [self.loginView initWithReadPermissions: @[@"public_profile", @"user_friends"]]; // loginView is an FBLoginView
但是如果我把它放在 viewDidLoad
中并删除其他代码,这会起作用:
self.loginView.readPermissions = @[@"user_friends"];
我一定是在名称更改后才注意到这个问题的,因为我从我的帐户中删除了应用程序并重新添加了它,删除了在我为此 View Controller 使用 XIB 之前授予的旧 user_friends 权限。然后我将其归咎于名称更改,并在 Facebook 开发站点上无果而终地进行了搜索。
关于ios - 更改应用名称后,Facebook user_friends 权限不再返回使用该应用的 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25171783/