我在https://developers.facebook.com/docs/mobile/ios/build/
跟踪了原生iOS应用的登录说明我在应用程序中的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];
}
问题是我的应用程序打开了,我要求人们登录到Facebook以使用我的应用程序中的功能。 Apple拒绝了我说Facebook功能应该是可选的而不是强制的(在拒绝原因17.2中列出)。
我只是想知道我是否可以保留app委托中的大部分内容,但是把
if (![facebook isSessionValid]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"publish_stream",
nil];
[facebook authorize:permissions];
}
其他地方(例如按下登录facebook按钮时)。如果是这种情况,应该更新facebook文档,以免其他人被拒绝吗?或者也许我错过了我可以在app委托中保留的东西,但是调用其他东西来使登录可选?
提前感谢您的帮助!
答案 0 :(得分:2)
我解决这个问题的方法是将所有Facebook代码从-applicationDidFinishLaunching移动到自定义方法-createFBInstance,每当按下UIButton时我都会从UIViewController调用,所以现在用户只有在点击按钮时才会登录到Facebook这应用程序很棒!只需确保您只使用委托中FBSessionDelegate中的方法,我永远无法在任何其他类中使用它。我还在应用程序内部的Web视图中打开了登录网页,因此它看起来更好。
答案 1 :(得分:1)
当然会被拒绝。 17.2说要求用户共享个人信息的应用,例如电子邮件地址和出生日期, 为了功能将被拒绝。用户在拥有Facebook帐户之前无法使用您的应用程序。相反,我建议您保持可选,例如使用Facebook / Google登录并拥有您的应用程序自己的注册程序。