Câu hỏi thường gặp và khắc phục sự cố về Facebook Android SDK

Câu hỏi thường gặp

Trên Android 11, bạn có thể thêm khối queries sau đây vào AndroidMainfest.xml của dự án để khắc phục lỗi này:

<manifest package="com.example.app"> <queries> <provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> </queries> ... </manifest>

Bạn có thể sử dụng một ID ứng dụng Facebook trong nhiều ứng dụng Android. Chỉ cần sử dụng cùng một ID ứng dụng trong một ứng dụng khác để đăng nhập, chia sẻ, v.v.

Chúng tôi chỉ hỗ trợ một kết hợp tên gói/tên lớp để liên kết sâu và mở ứng dụng thông qua thông báo và các phương tiện khác.

Nếu bạn muốn hỗ trợ nhiều ứng dụng để liên kết sâu, hãy xem Liên kết ứng dụng.

Bạn có thể ghi đè các chuỗi trong SDK Facebook dành cho Android bằng cách cung cấp bản dịch trong tệp strings.xml của chính mình để có ngôn ngữ mong muốn.

Tệp strings.xml trong thư mục facebook/res/values/ chứa tất cả chuỗi mà SDK sử dụng. Tên tài nguyên chuỗi phải dễ hiểu.

Để biết thêm thông tin, hãy xem Hướng dẫn dành cho nhà phát triển Android: Bản địa hóa bằng tài nguyên.

Mỗi bản phát hành SDK Facebook dành cho Android với hộp thoại Chia sẻ gốc đều bao gồm APK dành cho ứng dụng Facebook.

APK này có trong bản SDK tải xuống cho đến khi phát hành 3.14.1. Sau thời gian này, APK đã trở thành bản tải xuống riêng biệt. Bạn có thể tìm APK trên Trang tải xuống của chúng tôi.

Chỉ cần cài đặt APK Facebook trên bộ mô phỏng hoặc thiết bị Android và thử nghiệm hộp thoại Chia sẻ gốc từ ứng dụng của bạn.

Thường thì thư viện Android có thể sử dụng BuildConfig.DEBUG để xác định xem ứng dụng có ở chế độ gỡ lỗi hay không. Tuy nhiên, do lỗi trong Gradle nên thư viện Android luôn được xây dựng với DEBUG được đặt thành false. Phương thức FacebookSdk.setIsDebugEnabled(boolean) là một phương pháp giúp bạn có thể đặt chế độ gỡ lỗi ngay từ ứng dụng. Phương thức này cho phép ghi cách gỡ lỗi từ SDK.

Bạn cũng có thể đặt chế độ ghi bằng FacebookSdk.addLoggingBehavior(LogginBehavior) để bật chức năng ghi cho các danh mục tin nhắn khác nhau. Xem Tài liệu tham khảo về SDK Android, LoggingBehavior.

Hộp thoại Chia sẻ thực hiện các lệnh gọi lại onSuccessonCancel khi có hành động của người dùng.

  • onSuccess khi người dùng chia sẻ thành công. Ngoài ra, cũng sẽ có postId trong lớp Sharer.Result nếu người dùng cấp quyền publish_actions cho ứng dụng. Nếu người dùng đó chưa đăng nhập bằng Đăng nhập Facebook thì phương thức này cũng sẽ được gọi nếu người dùng nhấp vào Cancel.
  • onCancel khi ai đó nhấp vào nút X của hộp thoại Chia sẻ hoặc nếu họ đã đăng nhập bằng Đăng nhập Facebook và nhấp vào Cancel.

Khắc phục sự cố

Khi bạn yêu cầu quyền đăng, bạn có thể gặp phải lỗi:

  • "Phiên: đã cố yêu cầu cấp quyền mới đối với phiên có yêu cầu đang chờ" hoặc
  • "Đã cố ủy quyền trong khi yêu cầu đang chờ"

Thông báo lỗi này nghĩa là ứng dụng của bạn đang cố yêu cầu cấp quyền mới trong khi yêu cầu trước đó chưa hoàn tất. Tất cả các yêu cầu về quyền đều không đồng bộ và bạn không thể yêu cầu quyền mới cho đến khi yêu cầu trước đó hoàn tất.

Xem các ứng dụng mẫu đi kèm SDK của chúng tôi như Scrumptious hoặc Hello Facebook để biết cách yêu cầu quyền mới theo nhiều bước.

Nếu không có lỗi trong nhật ký thì nguyên nhân có thể là yêu cầu chưa bao giờ được thực hiện. Để thực hiện GraphRequest, hãy gọi phương thức executeAsync.

Để đăng nhập hoặc sử dụng hộp thoại Chia sẻ gốc, bạn cần cho Facebook biết khóa bạn dùng để ký ứng dụng.

Đây là hash khóa, là hash SHA-1 của khóa dùng để ký ứng dụng của bạn. Thông thường sẽ có tối thiểu hai khóa khác nhau được sử dụng, một khóa để phát triển và gỡ lỗi còn một khóa để phát hành. Hãy xác minh cả hai giá trị đã được thêm trong trang cài đặt của ứng dụng.

Để biết thêm thông tin, hãy xem phần Bắt đầu với SDK Android, Tạo hash khóa phát triển.

Nguyên nhân phổ biến nhất là bạn không thiết lập ContentProvider trong AndroidManifest.xml. Hãy đảm bảo bạn thêm thông tin này vào tệp AndroidManifest.xml bằng ID ứng dụng của mình. Xem Chia sẻ trên Android - Điều kiện tiên quyết.