আইওএস 10 এ ফেসবুক আইওএস এসডিকে কীভাবে ব্যবহার করবেন


104

আমি সুইফট 3 ব্যবহার করে ফেসবুক লগইন করে একটি অ্যাপ তৈরি করতে এক্সকোড 8 ব্যবহার করার চেষ্টা করছি When আইওএস 10 এ, আমি এই ত্রুটিটি পেয়েছি:

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

এবং

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

কারও কি এর সমাধান আছে?

নোট 1 :

ডিবাগিংয়ের পরে, এই সমস্যাটি FBSDK ক্যান্ট আপডেট expect_challangeSecItemUpdateভিতরে security.frameworkকাজ ফাংশন । এটি আইওএস 10 এর একটি সমস্যা


5
"... আপনি কেন এই কাজ আশা করবেন?" কারণ সফ্টওয়্যার কাজ করা উচিত। এটি এই লোকটির দোষ নয়, এটি ফেসবুকের দোষ নয়। এটি অ্যাপলের দোষ। তারা একটি পাস পেয়েছে কারণ এটি "বিটা", তবে কেচেইন ভাঙা অগ্রহণযোগ্য, এমনকি বিটাতেও কাছাকাছি।
জেফ

উত্তর:


201

ত্রুটি OSStatus -10814 ঘটে যখন canOpenURL: কোনও অ্যাপ্লিকেশন খুঁজে না পায় , যা এই URL টি খুলতে পারে (আসলে, ফেসবুক canOpenURL:"fbauth2: /" যুক্তি দিয়ে তাদের অ্যাপ্লিকেশন সন্ধান করার চেষ্টা করছে )। মুদ্রণ ফাংশনের অভ্যন্তরে ঘটে, তাই আপনি এটি দিয়ে কিছুই করতে পারবেন না। তবে আপনি যদি ইনস্টল করা ফেসবুক অ্যাপ্লিকেশনটি ডিভাইসে আপনার অ্যাপ্লিকেশনটি চালনা করেন তবে আপনি এই ত্রুটিটি দেখতে পাবেন না।

ত্রুটি 308 টি ঘটনার কারণে ঘটে, যখন মানটি, কীচেইনে সঞ্চিত মানের সাথে সমান হয় না, এটি ফেসবুক সমাপ্তির পরামিতিগুলিতে সঞ্চিত থাকে (আরও তথ্যের জন্য আপনি পরীক্ষা করতে পারেন -[FBSDKLoginManager completeAuthentication:expectChallenge:])।

এটি ঘটেছিল কারণ অ্যাপল আইওএস 10 তে কীচেনের সাথে কাজ করার পদ্ধতি পরিবর্তন করেছে 10 এই সমস্যাটি সমাধান করার জন্য আপনার লক্ষ্যগুলি-> সক্ষমতায় যেতে হবে এবং কীচেন ভাগ করে নেওয়া সক্ষম করা উচিত (এটি আপনার অ্যাপের জন্য কীচেইনে অ্যাক্সেস সক্ষম করে): ভাবমূর্তি

আপনি যদি জামারিন ব্যবহার করছেন ( আরও তথ্যের জন্য এই লিঙ্কটি পড়ুন , ধন্যবাদ @ আদনামোকাজ):

কেবল নিশ্চিত হয়ে নিন যে আপনি এনটাইটেলমেন্টগুলিতে কীচেন অ্যাক্সেস সক্ষম করেছেন এবং সিমুলেটার (ডিবাগ) বিল্ডগুলির জন্যও এনটাইটেলমেন্টগুলি নির্বাচন করুন। ডিফল্টরূপে এটি সেট করা নেই।


2
আপনাকে অনেক ধন্যবাদ, এই পরিবর্তন সম্পর্কে আপনার কি কোনও দলিল আছে?
ট্রাইকোকুওং

1
এক্সকোড ছাড়ার পরে, চলমান, sudo xcode-select -switch /Applications/Xcode.app/Contents/Developerএবং পুনর্নির্মাণের চেষ্টা করার পরেও একই সমস্যা হচ্ছে। আমি এখন বুঝতে পারি যে আমি যে ত্রুটিটি দেখছি তা এই স্ট্যাকওভারফ্লো.com
রায় কোলাক

1
@ নিকিতাপি মনে হচ্ছে @ রয়কোলাক উপরে উল্লিখিত সমস্যাটির সাথে আপনার অভিজ্ঞতা আছে।
রোমান এরমোলভ

1
@ নিকিতাপি এটি আবিষ্কার করেছে। এটি একটি তৃতীয় পক্ষের লাইব্রেরি (ক্লিভারট্যাপ) যা অ্যাপ প্রতিনিধির সাথে স্বয়ংক্রিয়ভাবে সংহত করার চেষ্টা করছিল। আমি স্ট্যাকওভারফ্লো / প্রশ্নগুলিতে জবাব দিয়েছি / ৩৯৯৯১41১৪ / আপনার মনোযোগের জন্য ধন্যবাদ!
রায় কোলাক

3
@ রোমানআর্মোলোভ আমি এটি আবিষ্কার করেছি, আমি জ্যামারিনে আছি এবং ডিবাগ তৈরির সময় এনটাইটেলমেন্ট.পলিট ফাইলটি ডিফল্টরূপে ব্যবহার করা হয় না। আমি ডিবাগের জন্য এনটাইটেলমেন্ট অন্তর্ভুক্ত করলে এটি কাজ করে। নিম্নলিখিতটি আমাকে একটি সঠিক সমাধানের চূড়ান্ত ধাক্কা দিয়েছে। stackoverflow.com/a/39576798/1062572 - জামারিন ডিউডগুলি অনুপস্থিত ছিল তা নির্ধারণের জন্য আপনি নিজের উত্তরটি আপডেট করতে পারেন could
ডায়নামোকাজ

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.)

আপনার আইওএস সিমুলেটরটিতে ফেসবুক অ্যাপ্লিকেশন ইনস্টল করা নেই। আপনি আপনার আইওএস সিমুলেটরটিতে অ্যাপ্লিকেশন ইনস্টল না করা পর্যন্ত আপনি ত্রুটি পেতে থাকবেন। ইনস্টল করা আইওএস ডিভাইসে আপনার আইওএস অ্যাপ্লিকেশনটি ফেসবুক ইনস্টল করে চালানোর চেষ্টা করুন এবং আপনি ত্রুটি বার্তাটি আর দেখতে পাবেন না। আশাকরি এটা সাহায্য করবে!


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 
}

* ফেসবুক এসডির গিথুব পৃষ্ঠায় @ মরিডিনবিজি দ্বারা প্রস্তাবিত


0

আপনি যদি FBSDKCoreKit বা FBSDKLoginKit সংস্করণ 4.39.0 ব্যবহার করেন তবে এই ত্রুটিটিও ঘটতে পারে। এসডিকে এই সংস্করণে একটি বাগ ছিল। এটি ঠিক করতে 4.39.1 বা তার চেয়ে বেশি আপগ্রেড করুন। বিশদ এখানে

পার্শ্ব নোট হিসাবে, অন্যান্য ব্যবহারকারী উল্লেখ করেছেন যে আপনার যদি সিমুলেটারে ফেসবুক ইনস্টল না থাকে তবে এই ত্রুটিটি দেখা যায়। এটি সত্য, তবে এসডিকে অ্যাপ্লিকেশন ইনস্টল করা না থাকলে স্বয়ংক্রিয়ভাবে ওয়েব লগইন পদ্ধতিতে ফিরে আসার কথা। যদি এটি না ঘটে তবে এটি অন্য কোনও সমস্যার কারণে হতে পারে যেমন আপনার তথ্য.প্লেস্টে হারিয়ে যাওয়া / ভুল কনফিগার্ডকৃত মানগুলি (এলএস অ্যাপ্লিকেশনকুইউরিস স্কিমগুলি পরীক্ষা করুন) বা আপনার অ্যাপডেলিজেটে অনুপস্থিত পদ্ধতিগুলির কারণে হতে পারে।


-3

আমার ক্ষেত্রে, সমস্যাটি ছিল গুগল অ্যানালিটিক্স। ডিফল্টরূপে মনে হচ্ছে এটি অ্যাপের ভিউ কন্ট্রোলারের শীর্ষে নিজস্ব ভিউ কন্ট্রোলার যুক্ত করছে। {আপনার অ্যাপ্লিকেশন} -Info.plist- এ "ফায়ারব্যাস অ্যাপ্লিকেশন ডেলিগেটপ্রক্সইনবল" কে "NO" তে সেট করা সমস্যার সমাধান করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.