Facebook SDK : URL 체계로 등록되지 않은 앱


82

여기 에서 Facebook SDK찾은 것을 사용하고 있으며 제공된 샘플을 시도하고 있습니다 (폴더에 있음 ).FacebookiOSSample

나는 단순히 교체하는 경우 AppId내 특정 여기 AppId, 나는 더 이상 공유 할 수 있습니다. ( AppDelegate파일과 파일 모두에서 교체했습니다 info.plist). 이제 다음과 같은 오류가 발생합니다.

FBSDKLog : FBAppCall의 유효하지 않은 사용, fb ****는 URL Scheme으로 등록되지 않았습니다. plist에 'FacebookUrlSchemeSuffix'를 설정 했습니까?

그렇지 않으면 이것은 AppId라는 이름을 가리키는 샘플의 원본에서 잘 작동합니다 IFaceTouch.

앱 설정에 문제가있을 수 있습니다. 어떻게 등록 AppId합니까?


1
참고 : CFBundleURLSchemes에 fbauth2를 추가하도록 권장하는 아래 답변은 앱이 다른 앱의 Facebook 앱 스위치 로그인 트래픽을 가로 채도록합니다. 하지 마십시오
Chris Maddern

"canOpenURL : 실패"경고를 해결하려는 경우 해당 경고는 Facebook 앱이 장치 또는 시뮬레이터에 설치되지 않았으며 무시할 수 있음을 나타낼뿐입니다. '
Binoy jose

답변:


225

다음 세 단계를 따르십시오.

  1. 문자열 값을 사용하여 FacebookAppID 라는 키를 만들고 여기에 앱 ID를 추가합니다.
  2. 문자열 값이있는 FacebookDisplayName 이라는 키 를 만들고 앱 대시 보드에서 구성한 표시 이름을 추가합니다.
  3. URL Schemes 라는 단일 배열 하위 항목을 사용하여 URL 유형이라는 배열 키를 만듭니다 . 앱 ID가 fb로 시작되는 단일 항목을 제공하십시오. 애플리케이션이 콜백 URL을 수신하는지 확인하는 데 사용됩니다. 웹 기반 OAuth 흐름 을 .

완성 된 .plist는 다음과 같아야합니다.

여기에 이미지 설명 입력

소스 링크 :


1
좋습니다. 문제는 FacebookDisplayName 인 것 같았습니다. 이것은 내 앱 대시 보드와 일치하지 않습니다. 감사!
L. Desjardins

3
대부분의 경우 유사한 오류 메시지를 유발할 수있는 오타, 대문자 / 소문자가 누락 된 문자를 잘못 입력 한 경우에도 마찬가지입니다. 다시 확인하세요!
BootMaker

4
@BootMaker 둘째- "URL Schemes"대신 "URL Schemes"를 잘못 사용했기 때문에 Mine이 작동하지 않았습니다.
Benjamin Martin

1
여기에서 Xcode 6 용 업데이트 된 2015 버전에 대한 자세한 그림을 볼 수 있습니다. stackoverflow.com/a/18480723/1780492
BootMaker

또한 FacebookAppID 및 FacebookDisplayName이 URL 유형보다 상위에 있도록주의하십시오. 그렇지 않으면 SDK 4에서 충돌이 발생합니다.
Paul Razvan Berg

20

원시 키 및 값 측면에서 CFBundleURLTypes 및 CFBundleURLSchemes가 있어야합니다.

원시 키 및 값 측면에서 CFBundleURLTypes 및 CFBundleURLSchemes가 있어야합니다. 도움이 되었기를 바랍니다.


1
CFBundle이 존재하지만 xml 형식은 내 구조가 잘못되었음을 발견하는 데 도움이되었습니다. 감사합니다
daniel kilinskas

16

정보 아래에 또 다른 섹션이 있습니다 -URL 유형

URL Schemes 필드의 값이 위의 속성 목록 에있는 URL 유형-> URL Schemes 의 값과 일치 하는지 확인합니다 . (또한 FacebookAppID와 일치)

URL 유형


9

iOS 9의 경우

오류가있는 경우 : 'LSApplicationQueriesSchemes'

를 기반으로 내 대답과 함께 곰 , 당신은 또한 그 라인을 추가해야합니다 :

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>fbauth2</string>
</array>

참조 .

.plist 파일 끝에 다음 줄 이 표시 되어야 합니다.

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb2R3234544534554</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>2R3234544534554</string>
    <key>FacebookDisplayName</key>
    <string>stevejeff</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>facebook.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>fbcdn.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>akamaihd.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth2</string>
    </array>
    </dict>
    </plist>

* SDK v4.6.0 이상을 사용하는 경우 다음 항목 만 추가하면됩니다. * (감사합니다 mohsinj )

   <key>LSApplicationQueriesSchemes</key>
      <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
   </array>

1
[업데이트] 2016 년 8 월 "LSApplicationQueriesSchemes"의 경우 더 많은 항목을 추가해야합니다 <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
mohsinj

4

1- Xcode에서 프로젝트의 Info.plist 파일을 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 열기-> 소스 코드를 선택합니다.

2- 최종 </dict>요소 바로 앞에 다음 XML 스 니펫을 파일 본문에 삽입합니다 .

  <key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-share-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

3- {your-app-id} 및 {your-app-name}을 Facebook 앱 대시 보드에있는 앱의 앱 ID 및 이름으로 바꿉니다.



0

오늘 저는 FacebookDisplayName 에서 공간을 제거하여이 버그를 해결했습니다 .

FacebookDisplayName에 공간이 없는지 확인하십시오.


0

당신의 문제가 저와 같은지 모르겠습니다. 그러나 그것을 찾는 데 시간이 좀 걸렸고 누구에게나 도움이 될 수 있도록 여기에 둘 것입니다 .. 문제는 Google 로그인이 동일한 info.plist 속성 이름을 사용하고 facebook의 이름을 재정의했다는 것입니다 .. 그래서 나는 X-Code에서 이것을보고 합칠 수 있습니다. 이제 모든 것이 잘 작동합니다! (URL 유형 속성).


0

제 경우에는 이미 info.plist에 LSApplicationQueriesSchemes 및 CFBundleURLTypes 키가 있었는데, 다시 info.plist에 별도로 추가했습니다. 두 번째 것을 읽지 않았고 인식하지 못했습니다. 따라서 이전 LSApplicationQueriesSchemes 및 CFBundleURLTypes 키에 값을 추가하여 내 문제를 해결했습니다.


-3

나도 같은 문제에 직면했습니다. 그런 다음 이렇게했습니다.

<dict> <key>CFBundleURLSchemes</key> <array> <string>fb154510174913175</string> <string>fbauth2</string> // add this line to remove the error </array> </dict>

이제 문제가 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.