iPhone应用程序拒绝17.2:应用程序要求用户使用其Facebook帐户login

我遵循我的原生iOS应用程序的login说明https://developers.facebook.com/docs/mobile/ios/build/

我在应用程序的AppDelegate中拥有一切facebook:didFinishLaunchingWithOptions:

facebook = [[Facebook alloc] initWithAppId:@"xyzabc" andDelegate:self]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; } if (![facebook isSessionValid]) { NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream", nil]; [facebook authorize:permissions]; } 

问题是,我的应用程序打开,我需要人login到Facebook使用我的应用程序的function。 苹果公司拒绝了我说Facebookfunction应该是可选的而不是强制的(列在拒绝理由17.2)。

我只是想知道如果我可以保留应用程序委托中的大部分内容,

  if (![facebook isSessionValid]) { NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream", nil]; [facebook authorize:permissions]; } 

在其他地方(例如按下facebookloginbutton时)。 如果是这样的话,Facebook文档是否应该更新以避免其他人被拒绝? 或者,也许我错过了我可以保留在应用程序委托,但调用其他的东西,使login可选?

在此先感谢您的帮助!

我做了什么来解决这个问题我把所有的Facebook代码从-applicationDidFinishLaunching移动到一个自定义的方法-createFBInstance,我从一个UIViewController调用每当一个UIButton被按下,所以现在用户只有login到Facebook,当一个button被点击,伟大的作品! 只要确保你只使用委托中FBSessionDelegate的方法,我永远不能让它在任何其他类中工作。 我也在应用程序内部的web视图中打开了login网页,看起来好多了。

当然会被拒绝。 17.2表示要求用户共享个人信息的应用程序,如电子邮件地址和出生date,以便function将被拒绝。 用户没有办法使用你的应用程序,直到他们有Facebook帐户。 相反,我build议你保持可选,如login与Facebook /谷歌,并有你的应用程序自己的注册程序。