iPhone应用程序拒绝17.2:应用程序要求用户使用他们的Facebook帐户登录

时间:2012-07-30 19:51:46

标签: ios iphone facebook login appstore-approval

我在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委托中保留的东西,但是调用其他东西来使登录可选?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我解决这个问题的方法是将所有Facebook代码从-applicationDidFinishLaunching移动到自定义方法-createFBInstance,每当按下UIButton时我都会从UIViewController调用,所以现在用户只有在点击按钮时才会登录到Facebook这应用程序很棒!只需确保您只使用委托中FBSessionDelegate中的方法,我永远无法在任何其他类中使用它。我还在应用程序内部的Web视图中打开了登录网页,因此它看起来更好。

答案 1 :(得分:1)

当然会被拒绝。 17.2说要求用户共享个人信息的应用,例如电子邮件地址和出生日期, 为了功能将被拒绝。用户在拥有Facebook帐户之前无法使用您的应用程序。相反,我建议您保持可选,例如使用Facebook / Google登录并拥有您的应用程序自己的注册程序。