繁体   English   中英

更改应用程序名称后,Facebook user_friends权限不再返回使用该应用程序的朋友

[英]Facebook user_friends permission no longer returning friends who use the app after changing app name

我一直在iPhone应用程序中使用Facebook SDK,使用放置在Interface Builder XIB文件中并在视图控制器.m文件的委托方法中初始化的FBLoginView登录用户,如下所示:

- (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中的捆绑包标识符相同。 我的显示名称和我的PLIST中的FacebookDisplayName都已更改,并且现在相同。

我找到了答案。 我看错地方了; 问题与Facebook上的名称更改无关。 我发现,我的问题中的这段代码是在XIB已在loginView上调用init之后被调用的,默认情况下,该init仅提供公共配置文件。 之后调用initWithReadPermissions不再添加任何权限。 实际上,此调用似乎被忽略:

更新:实际上,回头看一下,我认为问题是我在分配它之前就在FBLoginView上调用了initWithReadPermissions 我的新手错误。

self.loginView = [self.loginView initWithReadPermissions: @[@"public_profile", @"user_friends"]]; // loginView is an FBLoginView 

但是,如果我将其放入viewDidLoad并删除其他代码,则此方法有效:

self.loginView.readPermissions = @[@"user_friends"];

我必须只在更改名称后才注意到此问题,因为我从帐户中删除了该应用程序并重新添加了该应用程序,从而消除了在我为该视图控制器使用XIB之前授予的旧user_friends权限。 然后,我将其归咎于更名,并在Facebook开发站点上毫无结果地进行搜索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM