私には、最初のセッション開始リクエストで、iOSに統合されたFacebookと、古い「アプリ切り替え」認証が別の方法で機能しているように見えます。
最初に読み取り権限のみでセッションを開き、公開時に公開権限を要求する必要があります。
古いものは最初にすべての許可を要求する必要があるので、アプリは後で投稿できるようになります(そうでない場合)。
そこで、Facebookの接続メソッドでセッション開始ロジックを分割しました。
-(void)connectWithSuccess:(EPPZSuccessBlock) successBlock
fail:(EPPZFailBlock) failBlock
{
if (FBSession.activeSession.isOpen)
{
if (successBlock) successBlock();
[self socialServiceDidConnect:self];
}
else
{
//This is what I need to decide somehow.
BOOL userHaveIntegrataedFacebookAccountSetup = NO;
if (userHaveIntegrataedFacebookAccountSetup)
{
//Request for a session with read permissions only, otherwise iOS integrated Facebook will throw me an exception.
[FBSession openActiveSessionWithReadPermissions:[NSArray arrayWithObject:@"user_about_me"]
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
{ [self handleOpenSessionResponseWithSession:session status:status error:error success:successBlock fail:failBlock]; }];
}
else
{
//Request for session with every (incuding publish) permissions, otherwise non integrated Facebook won't let the app to post later.
[FBSession openActiveSessionWithPublishPermissions:self.publishPermissions
defaultAudience:FBSessionDefaultAudienceEveryone
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
{ [self handleOpenSessionResponseWithSession:session status:status error:error success:successBlock fail:failBlock]; }];
}
}
}
しかし、どちらを使用するかを簡単に検出する必要があるため、質問は次のようになります。要求セッションの前に、ユーザーがiOS統合Facebookアカウントを設定しているかどうかを検出するにはどうすればよいですか。