ネイティブ ログイン用の最新の FB SDK を使用して iOS アプリに取り組んでいます。設定の [これらのアプリにアカウントの使用を許可する] でアプリをオフにすると、エラー「com.facebook.sdk エラー 2」が予想されます。来ます。
アプリで「これらのアプリがアカウントを使用できるようにする」がオフになっている場合でも、このエラーを解決するエレガントな方法はありますか? 解決策を検索しましたが、すべての回答は、そのオプションをオンにする必要があると言っています。しかし、より良い方法は、ユーザーがそのオプションをオフに切り替えた場合でも、ユーザーが自分のデバイスで Facebook にまったくログインしないのと同じように、シームレスに高速アプリ切り替えの方法にフォールバックしてログインできるようにすることだと思います。最新の FB SDK でこれを行うにはどうすればよいですか? ありがとう!
====================================更新============= ============================ 非推奨関数 openActiveSessionWithPermissions:allowLoginUI:completionHandler を使って解決しました
最初に、ユーザーがこのオプションをオフに切り替えているかどうかを確認する必要があります。
self.useAccountAllowed = true;
ACAccountStore *accountStore;
ACAccountType *accountTypeFB;
if ((accountStore = [[ACAccountStore alloc] init]) &&
(accountTypeFB = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook] ) ){
NSArray *fbAccounts = [accountStore accountsWithAccountType:accountTypeFB];
id account;
if (!fbAccounts)
{
//do not log into FB on the device
}
else if ([fbAccounts count] == 0) {
[FBSession.activeSession closeAndClearTokenInformation];
self.useAccountAllowed = false; //user switch this option off
}
次に openSession 関数で、self.useAccountAllowed が false の場合に非推奨の関数を使用します。
if (self.useAccountAllowed) {
[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession* session, FBSessionState status, NSError* error){
[self sessionStateChanged:session state:status error:error];}];
}
else {
NSArray* lPermission = FBSession.activeSession.permissions;
[FBSession openActiveSessionWithPermissions:lPermission allowLoginUI:YES completionHandler:^(FBSession* session, FBSessionState status, NSError* error){
[self sessionStateChanged:session state:status error:error];}];
それが正しい方法かどうかはわかりません。