2

こちらのネイティブ iOS アプリのログイン手順に従いましたhttps://developers.facebook.com/docs/mobile/ios/build/

application:didFinishLaunchingWithOptions: の AppDelegate にすべての facebook があります。

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 にリストされています)。

アプリデリゲートにほとんどすべてを保持できるかどうか疑問に思っていましたが、

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

別の場所 (Facebook へのログイン ボタンが押されたときなど)。この場合、他の人が拒否されないように Facebook のドキュメントを更新する必要がありますか? それとも、アプリのデリゲートでそれを保持できる何かを見逃したのかもしれませんが、ログインをオプションにするために何か他のものを呼び出しますか?

よろしくお願いします。

4

2 に答える 2

2

これを解決するために私がしたことは、すべての Facebook コードを -applicationDidFinishLaunching からカスタム メソッド -createFBInstance に移動し、UIButton が押されるたびに UIViewController から呼び出したので、ユーザーはボタンがクリックされたときにのみ Facebook にログインし、アプリよく働く!デリゲート内で FBSessionDelegate のメソッドのみを使用するようにしてください。他のクラスでは機能しません。また、アプリ内の Web ビューでログイン Web ページを開いたので、見栄えがよくなりました。

于 2012-07-30T20:09:45.337 に答える
1

もちろん断られます。17.2 は、機能するためにユーザーが電子メール アドレスや生年月日などの個人情報を共有する必要があるアプリは拒否されると述べています。ユーザーが Facebook アカウントを取得するまで、アプリケーションを使用する方法はありません。代わりに、facebook/Google でログインするなどのオプションのままにし、アプリケーション独自の登録手順を用意することをお勧めします。

于 2012-07-30T20:10:37.640 に答える