IOS 10 पर फेसबुक iOS एसडीके का उपयोग कैसे करें


104

मैं स्विफ्ट 3 का उपयोग करके फेसबुक लॉगिन के साथ एक ऐप बनाने के लिए Xcode 8 का उपयोग करने की कोशिश कर रहा हूं। जब मैं iOS सिम्युलेटर 9.3 को वापस स्विच करता हूं, तो यह काम करता है। IOS 10 में, मुझे यह त्रुटि मिली:

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

तथा

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

किसी के पास इसका कोई हल है?

नोट 1 :

डीबग करने के बाद, यह समस्या FBSDK कैंट अपडेट है expect_challange। समारोह SecItemUpdateके अंदर security.frameworkकाम नहीं। यह IOS 10 की समस्या है


5
"... आप इस काम की उम्मीद क्यों करेंगे?" क्योंकि सॉफ्टवेयर काम करना चाहिए। यह इस लड़के की गलती नहीं है, यह फेसबुक की गलती नहीं है। यह Apple की गलती है। उन्हें पास मिलता है क्योंकि यह "बीटा" है, लेकिन किचेन को तोड़ना अस्वीकार्य के पास है, यहां तक ​​कि बीटा में भी।
जेफ हॉलिडे

जवाबों:


201

OSStatus -10814 में त्रुटि तब होती है जब canOpenURL: कोई एप्लिकेशन नहीं मिल सकता है , जो इस URL को खोल सकता है (वास्तव में, फेसबुक canOpenURL:तर्क "fbauth2: /") के साथ कॉल करके उनके आवेदन को खोजने की कोशिश कर रहा है । मुद्रण फ़ंक्शन के अंदर होता है, इसलिए आप इसके साथ कुछ नहीं कर सकते। लेकिन यदि आप अपने एप्लिकेशन को इंस्टॉल किए गए फेसबुक ऐप के साथ डिवाइस पर चलाएंगे, तो आपको यह त्रुटि नहीं दिखाई देगी।

308 त्रुटि स्थिति के कारण होती है, जब मूल्य, चाबी का गुच्छा में संग्रहीत मूल्य के बराबर नहीं होता है, जो कि फेसबुक पूरा होने वाले मापदंडों में संग्रहीत होता है (अधिक जानकारी के लिए आप जांच कर सकते हैं -[FBSDKLoginManager completeAuthentication:expectChallenge:])।

ऐसा इसलिए होता है क्योंकि Apple ने iOS 10 में चाबी का गुच्छा के साथ काम करने का तरीका बदल दिया है। इस मुद्दे को ठीक करने के लिए आपको बस लक्ष्य-> क्षमताओं पर जाना चाहिए और किचेन शेयरिंग को सक्षम करना चाहिए (यह आपके ऐप के लिए किचेन तक पहुंच को सक्षम करता है): छवि

यदि आप Xamarin का उपयोग कर रहे हैं ( अधिक जानकारी के लिए इस लिंक को पढ़ें , धन्यवाद @dynamokaj):

बस सुनिश्चित करें कि आप एंटाइटेलमेंट में किचेन एक्सेस को सक्षम करें और सिम्युलेटर (डिबग) बिल्ड के लिए एंटाइटेलमेंट का चयन करें। डिफ़ॉल्ट रूप से यह सेट नहीं है।


2
बहुत बहुत धन्यवाद, क्या आपके पास इस बदलाव के बारे में कोई दस्तावेज है?
अक्टूबर को trquoccuong

1
Xcode छोड़ने के बाद, दौड़ना, sudo xcode-select -switch /Applications/Xcode.app/Contents/Developerऔर पुनर्निर्माण की कोशिश करना, अभी भी वही समस्या है। मुझे अब एहसास हो रहा है कि मैं जो त्रुटि देख रहा हूं वह इस stackoverflow.com/questions/39091841/… के
रॉय कोलाक

1
@NikitaP ऐसा लगता है कि आपके पास समस्या का अनुभव है कि @ रॉयकोलाक ऊपर उल्लेख करते हैं।
रोमन एर्मोलोव

1
@ निकितापी ने इसका पता लगाया। यह एक तीसरी पार्टी लाइब्रेरी (क्लीवरटैप) थी जो ऐप के प्रतिनिधि में ऑटो को एकीकृत करने की कोशिश कर रही थी। मैंने stackoverflow.com/questions/39091841/… में उत्तर दिया आपका ध्यान के लिए धन्यवाद!
रॉय कोलक

3
@ रोमेनरोमोलोव ने मुझे यह पता लगाया, मैं ज़ामरीन पर हूं और जब डीबग के लिए एंटिटेलमेंट.प्लिस्ट फ़ाइल का उपयोग डिफ़ॉल्ट रूप से नहीं किया जाता है। जब मैंने डिबग के लिए एंटाइटेलमेंट को शामिल किया तो इसने काम किया। निम्नलिखित ने मुझे एक उचित समाधान के लिए अंतिम धक्का दिया। stackoverflow.com/a/39576798/1062572 - हो सकता है कि आप अपने उत्तर को अपडेट करने के लिए ज़मरीन के दोस्तों के लिए यह पता लगाना आसान बना सकें कि वे गायब थे।
डायनामोकज

5

एक ही समस्या मेरे ऐप में थी, मैंने कई समाधान की जाँच की लेकिन मेरे लिए काम नहीं किया। मैंने नीचे विधि का उपयोग करके इस समस्या को ठीक किया है।

इस लिंक पर जाएं अपना ऐप चुनें और अपना कॉन्फिगर करेंinfo.plist

import और इस कोड को अपने में जोड़ें 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

मुख्य कारण आपको निम्न त्रुटि हो रही है,

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

यह है कि आपके iOS सिम्युलेटर में फेसबुक एप्लिकेशन इंस्टॉल नहीं है। जब तक आप अपने iOS सिम्युलेटर पर एप्लिकेशन इंस्टॉल नहीं करते, तब तक आपको त्रुटि मिलती रहेगी। फेसबुक पर इंस्टॉल किए गए iOS डिवाइस पर अपने iOS एप्लिकेशन को चलाने का प्रयास करें और आपको त्रुटि संदेश फिर से दिखाई नहीं देगा। उम्मीद है की यह मदद करेगा!


यह वेब ui खोलना चाहिए जब fb ऐप इंस्टॉल नहीं होता है।
साफ्टलेन

3

मेरे मामले में, यह फिक्स था:

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 
}

* फेसबुक एसडीके के जीथब पेज पर @MoridinBG द्वारा अनुशंसित


0

यदि आप FBSDKCoreKit या FBSDKLoginKit संस्करण 4.39.0 का उपयोग कर रहे हैं, तो यह त्रुटि भी हो सकती है। एसडीके के इस संस्करण में एक बग था। इसे ठीक करने के लिए 4.39.1 या उच्चतर पर अपग्रेड करें। विवरण यहाँ है

एक साइड नोट के रूप में, अन्य उपयोगकर्ताओं ने उल्लेख किया कि यह त्रुटि देखी गई है यदि आपके पास सिम्युलेटर पर फेसबुक स्थापित नहीं है। यह सच है, लेकिन एसडीके स्वचालित रूप से वेब लॉगिन विधि में वापस आने वाला है जब ऐप इंस्टॉल नहीं किया जाता है। यदि ऐसा नहीं होता है, तो यह आपके Info.plist में गुम / ग़लतफ़हमी वाले मानों (जैसे LSApplicationQueriesSchemes की जाँच करें) या आपके AppDelegate पर अनुपलब्ध विधियों के कारण हो सकता है।


-3

मेरे मामले में, समस्या Google Analytics थी। डिफ़ॉल्ट रूप से ऐसा लगता है कि यह ऐप के व्यू कंट्रोलर के ऊपर अपना व्यू कंट्रोलर जोड़ रहा है। {आपका ऐप} -Info.plist में "FirebaseAppDelegateProxyEnabled" को "NO" पर सेट करने से समस्या हल हो गई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.