SDK Facebook: ứng dụng không được đăng ký dưới dạng Lược đồ URL


82

Tôi đang sử dụng Facebook SDKtìm thấy ở đây và đang thử mẫu được cung cấp (trong thư mục FacebookiOSSample).

Nếu tôi chỉ đơn giản thay thế AppIdở đây bằng cụ thể của tôi AppId, thì tôi không thể Chia sẻ được nữa. (Tôi đã thay thế nó trong cả AppDelegatetệp và info.plisttệp). Bây giờ tôi nhận được lỗi sau:

FBSDKLog: Sử dụng FBAppCall không hợp lệ, fb **** không được đăng ký dưới dạng Đề án URL. Bạn đã đặt 'FacebookUrlSchemeSuffix' trong danh sách của mình chưa?

Nếu không, điều này hoạt động tốt với bản gốc của mẫu AppIdtrỏ đến một cái gì đó được đặt tên IFaceTouch.

Điều gì có thể xảy ra với việc thiết lập ứng dụng của tôi, làm cách nào để đăng ký AppId?


1
Lưu ý: Câu trả lời dưới đây khuyên bạn nên thêm fbauth2 vào CFBundleURLSchemes của mình sẽ khiến ứng dụng của bạn chặn lưu lượng đăng nhập chuyển đổi ứng dụng Facebook của ứng dụng khác. KHÔNG LÀM ĐIỀU NÀY
Chris Maddern

Nếu bạn đang cố gắng giải quyết các cảnh báo "canOpenURL: không thành công", những cảnh báo đó chỉ cho biết rằng ứng dụng Facebook chưa được cài đặt trên thiết bị hoặc trình mô phỏng của bạn và có thể bị bỏ qua. '
Binoy jose

Câu trả lời:


225

Thực hiện theo ba bước sau:

  1. Tạo một khóa có tên FacebookAppID với giá trị chuỗi và thêm ID ứng dụng vào đó.
  2. Tạo khóa có tên FacebookDisplayName với giá trị chuỗi và thêm Tên hiển thị bạn đã định cấu hình trong Trang tổng quan ứng dụng.
  3. Tạo một khóa mảng được gọi là các loại URL với một mục con mảng duy nhất được gọi là Lược đồ URL . Cung cấp cho một mục duy nhất này với ID ứng dụng của bạn có tiền tố là fb. Điều này được sử dụng để đảm bảo ứng dụng sẽ nhận được URL gọi lại của luồng OAuth dựa trên web.

.Plist đã hoàn thành sẽ trông giống như sau:

nhập mô tả hình ảnh ở đây

Liên kết nguồn:


1
Được rồi, sự cố dường như là FacebookDisplayName, điều này không khớp với Trang tổng quan ứng dụng của tôi. Cảm ơn!
L. Desjardins

3
Hầu hết các trường hợp lỗi đánh máy có thể gây ra thông báo lỗi tương tự, thậm chí là một chữ cái bị gõ sai với chữ hoa / thường bị thiếu. Kiểm tra kỹ chúng!
BootMaker

4
@BootMaker Thứ hai là - Của tôi không hoạt động vì tôi đã đặt sai "lược đồ URL" thay vì "lược đồ URL".
Benjamin Martin

1
Bạn có thể xem hình minh họa chi tiết với phiên bản 2015 cập nhật cho Xcode 6 tại đây stackoverflow.com/a/18480723/1780492
BootMaker

Ngoài ra, hãy cẩn thận để FacebookAppID và FacebookDisplayName cao hơn các loại URL. Nó bị lỗi nếu không phải như vậy trên SDK 4.
Paul Razvan Berg

20

Về các khóa và giá trị thô, bạn nên có CFBundleURLTypes và CFBundleURLSchemes

Về các khóa và giá trị thô, bạn nên có CFBundleURLTypes và CFBundleURLSchemes. Hy vọng rằng sẽ giúp!


1
CFBundle tồn tại, nhưng định dạng xml đã giúp tôi phát hiện ra rằng cấu trúc của tôi đã sai. cảm ơn bạn
daniel kilinskas

16

có một phần khác bên dưới thông tin - Các loại URL

kiểm tra xem các giá trị ở đó, trong trường Lược đồ URL khớp với giá trị trong các loại URL -> Lược đồ URL trong danh sách thuộc tính ở trên. (và cũng khớp với FacebookAppID)

CÁC LOẠI URL


9

Đối với iOS 9

Nếu bạn gặp lỗi: 'LSApplicationQueriesSchemes'

Dựa trên câu trả lời của Bear with me , bạn cũng sẽ phải thêm những dòng đó:

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

Xem này .

Bạn nên kết thúc với những dòng đó ở cuối tệp .plist của mình:

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

* Nếu bạn đang sử dụng SDK v4.6.0 trở lên, bạn chỉ cần thêm: * (Cảm ơn mohsinj )

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

1
[UPDATE] Tháng 8 - 2016 Đối với "LSApplicationQueriesSchemes" Bạn phải thêm các mục khác - <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
mohsinj

4

1- Trong Xcode, nhấp chuột phải vào tệp Info.plist của dự án của bạn và chọn Mở dưới dạng -> Mã nguồn.

2- Chèn đoạn mã XML sau vào nội dung tệp của bạn ngay trước </dict>phần tử cuối cùng .

  <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- Thay thế {your-app-id} và {your-app-name} bằng ID và tên ứng dụng của bạn có trên Trang tổng quan ứng dụng Facebook.



0

Hôm nay tôi đã giải quyết lỗi này bằng cách chỉ xóa dung lượng khỏi FacebookDisplayName .

đảm bảo rằng bạn không có bất kỳ dung lượng nào trong FacebookDisplayName


0

Tôi không biết liệu vấn đề của bạn có giống như của tôi không. Nhưng tôi đã mất một thời gian để tìm thấy nó và tôi sẽ đặt nó ở đây để nó có thể giúp bất cứ ai .. Vấn đề là google đăng nhập đã sử dụng cùng một tên thuộc tính info.plist và nó đã ghi đè lên các tên của facebook .. Vì vậy, tôi có thể thấy điều này trong X-Code và ghép chúng lại với nhau, bây giờ mọi thứ đều hoạt động tốt! (Thuộc tính Loại URL).


0

Trong trường hợp của tôi, tôi đã có các khóa LSApplicationQueriesSchemes và CFBundleURLTypes trong info.plist của mình, Khi tôi thêm chúng một lần nữa riêng biệt vào info.plist. nó không đọc cái thứ hai và không nhận ra. Vì vậy, thêm giá trị vào các khóa LSApplicationQueriesSchemes và CFBundleURLTypes trước đó đã giải quyết được vấn đề của tôi.


-3

Tôi cũng đang phải đối mặt với vấn đề tương tự. Sau đó, làm điều này:

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

và sự cố đã được khắc phục ngay bây giờ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.