私は取得し続けます
「エラーDomain = com.facebook.sdk.login Code = 308」操作を完了できませんでした。 (com.facebook.sdk.loginエラー308。) ""
デバイスからFacebookでログインしようとすると。
私のコードはシミュレータで動作しますが、実際のデバイスでは動作しません。誰も以前にこのエラーコードに遭遇しましたか?リクエストに応じてコードを共有させていただきます。
少なくとも私にとっての解決策の1つは、Xcodeデバッガーを介してデバイス上で実行しないことです。デバッガー外のデバイスでアプリを実行すると、Facebookのログインは正常に機能します。デバッガーを介してsimでアプリを実行すると、Facebookのログインは正常に機能します。
Xcodeデバッガーを介してデバイスでアプリを実行する場合にのみ、com.facebook.sdk.loginエラー308を毎回取得します。
以下のソリューションは、iOS9 + Xcode 8上で実行され、Swift3.0で動作します
手順は
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
Open Urlのセットアップ
guard let source = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String else { return false } let annotation = options[UIApplicationOpenURLOptionsAnnotationKey] as? String return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)
機能タブでキーチェーン共有を有効にする必要があります。
私はまったく同じ問題を抱えていて、Info.plistを修正することで解決策を見つけることができました
LSApplicationQueriesSchemes
にすべての可能なスキームを追加しました
完全なリストは次のようになります。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb</string>
<string>fb-messenger-api20140430</string>
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>
<string>fb-messenger-api</string>
<string>fbshareextension</string>
</array>
FB SDK 4.6.0 Xcode 7.0 iOS9とまったく同じものを取得しています。 Facebook開発者サイトのすべてのセットアップと指示は、この手紙に従いました。上記のソリューションはどれもうまくいきませんでした。ログイン手順の実行中にデバイスにライブでデプロイし、Xcodeコンソールにフィードバックすると、動作が悪化することがわかりました。実際にログインするかどうかは、本当に幸運です。 seemsデプロイ後にアプリをコールドで再起動したときに、より予測可能な方法で動作するようにします。 -はい、これは事実です。
ログインに失敗すると決定すると、次のエラーが発生します。
Error Domain=com.facebook.sdk.login Code=308 "(null)"
私は同じ問題を抱えていて、システムの資格情報を更新して修正しました
[FBSDKLoginManager renewSystemCredentials:^(ACAccountCredentialRenewResult result, NSError *error) {
[[[YourAuthManager manager] facebookLoginManager] logInWithReadPermissions:@[@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Handle error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"email"]) {
// Do work
}
}
}];
}];
このソリューションは、再インストールよりも急進的ではなく、ユーザーが実行する必要はありません。私の推測では、FBSDK 4.6にはiOS 9システムのFB認証資格情報との競合がいくつかあります。
編集:しばらくテストした後、以前ほど頻繁に発生しませんでしたが、それでも問題であったため、FB SDKの以前のバージョンにダウングレードしました。うまくいけば誰かがより良い解決策を見つけます。
FBのコードを少し掘り下げましたが、これは単に権限の問題のようです。
FBは、キーチェーンを使用して、ログイン時に認証チャレンジを保存します。返すとき、キーチェーンから値を取得しようとして失敗します。詳細については、 this SO answer を参照してください。
セキュリティ資格は、プロビジョニングプロファイル間で変更される可能性があります。また、ご存じのように、プロファイルを維持し、構成とデバイス/シムをストレートに保つことは、猫を飼うようなものです。これはなぜ人々がそのような一貫性のない行動を経験するのかを説明できます。
そのため、実稼働環境ではすべてが正常に機能し、テスト中に問題が解決しない場合は、プロビジョニングプロファイルの資格を再確認する必要があります。
私の場合、最新のFB SDKにアップデートすることで修正されました。現時点では4.10。
最新(4.11)FB SDKに更新すると、これも修正されました。更新後、プロジェクトが正常に機能するかどうかを確認することを忘れないでください
Xcode 7.1 ios 9.1 FB SDK 4.7.1でも同じエラーが発生していました。 。
Xcodeを使用しないアンインストール、インストール、およびテストは初めて正常に機能します。これにより、デバイスを再度プラグインして、少なくとも数回実行することができます(少し矛盾しているようです...)
FBSDK 4.38を使用している場合、FBSDKLoginManager.mのchallengeExpectedの解析にバグがあります。
私は rinat-enikeev のホットフィックスを見つけました:
https://github.com/facebook/facebook-sdk-Swift/issues/286
ただ変える
NSString *challengeExpected = [self loadExpectedChallenge];
に
NSString *challengeExpected = [[self loadExpectedChallenge] stringByReplacingOccurrencesOfString:@"+" withString:@" "];
これで問題は解決しました。
この問題を解決するには、機能で「キーチェーン共有」を有効にするだけです。
新しいplistキー/値を追加することで、SDK 4.6.0を使用してiOS9で再度ログインできるようになりました
<key>FacebookDisplayName</key>
<string>{Your App Name}</string>
ソースコード 。
また、他のいくつかの回答の手順を実行して、共有FBSDKLoginManager()インスタンスを実装しました。
アプリをアンインストールして再インストールすることで問題を解決しましたが、すぐに機能しました。
このエラーはおそらくiOS 9に関連しています。iOS9以降、SDKはSafariViewControllerを使用しており、すでにログインしているときに問題が発生するようです。
同じ問題FB SDK 4.5.1と上記のソリューションのどれも私のために働いた。 Boltsフレームワークをドラッグアンドドロップでプロジェクトに追加することでこれを解決しました(FacebookSDKディレクトリから)
そして、ボルトフレームワークをappDelegateに追加します
#import <bolts/bolts.h>
FBSDKDelegateメソッドにloginButtonWillLoginがこれを置きます
- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton{
[FBSDKAccessToken setCurrentAccessToken:nil];
return YES;}
Suraj Pathak withXcode 9.4.1およびSwift 4.2に従いました
AppDelegateに追加しましたdidFinishLaunchingWithOptions
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
AppDelegateデリゲート関数に追加
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}
機能でキーチェーンを許可します。