İOS 10'da Facebook iOS SDK nasıl kullanılır


104

Swift 3 kullanarak Facebook oturum açma ile bir uygulama oluşturmak için Xcode 8'i kullanmaya çalışıyorum. İOS Simulator 9.3'e geri döndüğümde çalışıyor. İOS 10'da şu hatayı alıyorum:

""fbauth2:/" The operation couldn’t be completed. (OSStatus error -10814.)"

ve

Optional(Error Domain=com.facebook.sdk.login Code=308 "(null)")

Bunun için çözümü olan var mı?

Not 1 :

Hata ayıklamadan sonra, bu sorun FBSDK güncellenemiyor expect_challange. Fonksiyon SecItemUpdateiçeride security.frameworkçalışmaz. Bu bir IOS 10 problemidir


5
"... bunun işe yaramasını neden bekliyorsunuz?" Çünkü yazılım çalışmalı. Bu adamın hatası değil, facebook'un hatası değil. Apple'ın hatası. Geçerler çünkü bu "beta", ancak Anahtar Zincirini kırmak beta sürümde bile neredeyse kabul edilemez.
Jeff Holliday

Yanıtlar:


201

Hata OSStatus -10814 occures canOpenURL: herhangi bir uygulamayı bulamıyorum (aslında, Facebook arayarak başvurularını bulmaya çalışırken bu URL'yi açabilir, canOpenURL:argümanla "fbauth2: /"). Yazdırma işlevin içinde gerçekleşir, bu nedenle bununla hiçbir şey yapamazsınız. Ancak uygulamanızı Facebook uygulaması yüklü cihazda çalıştırırsanız bu hatayı görmezsiniz.

Hata 308 , anahtar zincirinde saklanan değerin değere eşit olmadığı, facebook tamamlama parametrelerinde saklanan durum nedeniyle oluşur (daha fazla bilgi için kontrol edebilirsiniz -[FBSDKLoginManager completeAuthentication:expectChallenge:]).

Bunun nedeni, Apple'ın iOS 10'da anahtarlık ile çalışma şeklini değiştirmesidir. Bu sorunu düzeltmek için, Hedefler-> Yetenekler'e gitmeniz ve anahtar zinciri paylaşımını etkinleştirmeniz (uygulamanız için anahtar zincirine erişim sağlar): görüntü

Xamarin kullanıyorsanız ( daha fazla bilgi için bu bağlantıyı okuyun , teşekkürler @dynamokaj):

Yetkilendirmelerde anahtar zinciri erişimini etkinleştirdiğinizden ve Simülatör (Hata Ayıklama) derlemeleri için yetkilendirmeleri de seçtiğinizden emin olun. Varsayılan olarak bu ayarlı değildir.


2
çok teşekkür ederim, bu değişiklikle ilgili herhangi bir belgeniz var mı?
trquoccuong

1
Xcode'dan çıktıktan sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer, çalıştıktan ve yeniden oluşturmaya çalıştıktan sonra, hala aynı sorunu yaşıyor. Gördüğüm hatanın bu stackoverflow.com/questions/39091841/…
Roy Kolak

1
@NikitaP @ RoyKolak'ın yukarıda bahsettiği sorunla ilgili deneyiminiz var gibi görünüyor.
Roman Ermolov

1
@NikitaP bunu çözdü. Uygulama temsilcisine otomatik olarak entegre olmaya çalışan üçüncü taraf bir kitaplıktı (CleverTap). Stackoverflow.com/questions/39091841/… 'de yanıtladım. İlginiz için teşekkürler!
Roy Kolak

3
@RomanErmolov Bunu anladım, Xamarin üzerindeyim ve hata ayıklama için oluştururken Entitlement.plist dosyası varsayılan olarak kullanılmıyor. Hata ayıklama yetkisini dahil ettiğimde işe yaradı. Aşağıdakiler bana uygun bir çözüme giden son hamleyi verdi. stackoverflow.com/a/39576798/1062572 - Belki Xamarin çalışanlarının eksik olup olmadığını anlamalarını kolaylaştırmak için yanıtınızı güncelleyebilirsiniz.
dynamokaj

5

Aynı sorun uygulamamdaydı, birçok çözümü kontrol ettim ama benim için işe yaramadı. Bu sorunu aşağıdaki yöntemi kullanarak düzelttim.

Bu Bağlantıya gidin Uygulamanızı Seçin veinfo.plist

import ve bu kodu AppDelegate

import FBSDKCoreKit
import FBSDKLoginKit

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
}

4

Aşağıdaki hatayı almanızın ana nedeni,

canOpenURL: failed for URL: "fbauth2:/" - error: "The operation couldn’t be completed. (OSStatus error -10814.)

iOS simülatörünüzde Facebook Uygulamasının kurulu olmamasıdır. Uygulamayı iOS simülatörünüze yükleyene kadar hatayı almaya devam edeceksiniz. İOS uygulamanızı Facebook'un yüklü olduğu, sağlanan bir iOS cihazında çalıştırmayı deneyin; hata mesajını bir daha görmeyeceksiniz. Bu yardımcı olur umarım!


FB uygulaması yüklenmediğinde web kullanıcı arayüzünü açmalıdır.
Softlion

3

Benim durumumda düzeltme *:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 

  // First, handle Facebook URL open request
  if let fbSDKAppId = FBSDKSettings.appID(), url.scheme!.hasPrefix("fb\(fbSDKAppId)"), url.host == "authorize" { 
    let shouldOpen: Bool = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
    return shouldOpen 
  } 

  // After it, handle any other response (e.g. deep links)
  handlerOtherUrls(url: url) 
  return true 
}

* Facebook SDK'nın Github sayfasında @ MoridinBG tarafından önerildiği üzere


0

Bu hata, FBSDKCoreKit veya FBSDKLoginKit sürüm 4.39.0 kullanıyorsanız da ortaya çıkabilir. SDK'nın bu sürümünde bir hata vardı. Düzeltmek için 4.39.1 veya üstüne yükseltin. Detaylar burada .

Bir yan not olarak, diğer kullanıcılar, simülatörde Facebook yüklü değilse bu hatanın görüldüğünü belirtti. Bu doğrudur, ancak uygulama yüklenmediğinde SDK'nın otomatik olarak Web oturum açma yöntemine geri dönmesi beklenir. Bu olmazsa, Info.plist'inizdeki eksik / yanlış yapılandırılmış değerler (LSApplicationQueriesSchemes'i kontrol edin) veya AppDelegate'inizdeki eksik yöntemler gibi başka bir sorundan kaynaklanıyor olabilir.


-3

Benim durumumda sorun Google Analytics idi. Varsayılan olarak, uygulamanın görünüm denetleyicisinin üstüne kendi görünüm denetleyicisini ekliyor gibi görünüyor. {Uygulamanız} -Info.plist içinde "FirebaseAppDelegateProxyEnabled" öğesini "HAYIR" olarak ayarlamak sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.