programing

iOS 10에서 Facebook iOS SDK 사용 방법

stoneblock 2023. 9. 26. 21:58

iOS 10에서 Facebook iOS SDK 사용 방법

저는 스위프트 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의 문제입니다.

오류 OS 상태 -10814가 발생하는 경우canOpenURL: 이 URL을 열 수 있는 응용 프로그램을 찾을 없습니다(실제로 Facebook이 전화를 걸어 응용 프로그램을 찾으려 함).canOpenURL:"fbauth2:/"라는 인수가 있습니다.인쇄는 기능 안에서 이루어지기 때문에 그것으로는 아무것도 할 수 없습니다.그러나 Facebook 앱이 설치된 장치에서 응용프로그램을 실행할 경우 이 오류가 발생하지 않습니다.

키체인에 저장된 값이 값과 동일하지 않은 경우, Facebook 완료 파라미터에 저장된 경우(자세한 내용은 확인 가능) 오류 308이 발생합니다.-[FBSDKLoginManager completeAuthentication:expectChallenge:]).

애플이 iOS 10에서 키체인으로 작동하는 방식을 바꿨기 때문에 발생하는 일입니다.이 문제를 해결하려면 Targets->Capabilities(기능)로 이동하여 키체인 공유를 활성화하면 됩니다(앱의 키체인에 액세스할 수 있음).

Xamarin을 사용하는 경우(자세한 내용은 이 링크를 읽어 보십시오. @dynamokaj 감사합니다):

사용 권한에서 키체인 액세스를 활성화하고 시뮬레이터(디버그) 빌드에 대한 사용 권한도 선택해야 합니다.기본적으로 설정되지 않습니다.

제 앱에도 같은 문제가 있어서 여러 가지 해결책을 확인했지만 잘 되지 않았습니다.아래 방법으로 이 문제를 해결했습니다.

링크로 이동 앱을 선택하고 구성합니다.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)
}

다음과 같은 오류가 발생하는 주된 이유는

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

iOS 시뮬레이터에 Facebook Application이 설치되어 있지 않다는 것입니다.iOS 시뮬레이터에 애플리케이션을 설치하기 전까지는 오류가 계속 발생합니다.Facebook이 설치된 프로비저닝된 iOS 기기에서 iOS 애플리케이션을 실행해 보십시오. 그러면 오류 메시지가 다시 나타나지 않습니다.도움이 되길 바랍니다!

제 경우 해결책은*이었습니다.

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의 Github 페이지에서 @MoridinBG가 추천하는 대로

FBSDKCoreKit 또는 FBSDKLoginKit 버전 4.39.0을 사용하는 경우에도 이 오류가 발생할 수 있습니다. 이 버전의 SDK에 버그가 있었습니다. 이를 수정하려면 4.39.1 이상으로 업그레이드하십시오.자세한 건 여기 있습니다.

참고 사항으로, 다른 사용자들은 시뮬레이터에 페이스북이 설치되어 있지 않으면 이러한 오류가 나타난다고 언급했습니다.그렇긴 한데, 앱이 설치되어 있지 않으면 SDK가 자동으로 웹 로그인 방식으로 되돌아가게 되어 있습니다.그렇지 않으면 Info.plist(LSA ApplicationQuerySchemes 확인)의 값이 누락되거나 잘못 구성된 경우 또는 AppDelegate의 메서드가 누락된 경우와 같은 다른 문제가 발생할 수 있습니다.

저의 경우 구글 애널리틱스가 문제였습니다.기본적으로 앱의 뷰 컨트롤러 위에 자신의 뷰 컨트롤러를 추가하는 것 같습니다.{Your app}-Info.plist에서 "FirebaseAppDelegateProxyEnabled"를 "NO"로 설정하면 문제가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/38689631/how-to-use-facebook-ios-sdk-on-ios-10