Selama login dasar, aplikasi Anda menerima akses ke profil publik seseorang. Untuk mengakses informasi profil tambahan atau menerbitkan konten di Facebook mewakili orang tersebut, Anda harus meminta izin tambahan, lihat Izin dengan Facebook Login.
Aplikasi Anda harus mengelola izin berikut:
Permintaan Graph API - Sebelum Anda mengirim permintaan Graph API, Anda harus memeriksa izin yang diperlukan dan memintanya jika diperlukan.
Izin yang Kurang dan Dicabut - Aplikasi Anda harus menangani kesalahan izin yang kurang atau dicabut dari Facebook, misalnya dengan meminta izin dan mencoba kembali. Lihat Penanganan Kesalahan, Facebook SDK untuk iOS.
Menentukan Waktu Permintaan - Anda akan mendapat konversi yang lebih baik jika Anda meminta izin hanya jika dibutuhkan dan menyediakan fungsi tanpa memerlukan semua izin.
Untuk meminta izin saat login dengan FBSDKLoginButton
, atur properti permissions
:
let loginButton = FBLoginButton() loginButton.permissions = ["public_profile", "email"]
Jika Anda menggunakan tombol login khusus dan bukan FBSDKLoginButton
, Anda dapat menggunakan LoginManager
untuk melakukan login:
override func viewDidLoad() { super.viewDidLoad() ... loginButton.addTarget(self, action: #selector(loginButtonClicked), for: .touchUpInside) } @objc func loginButtonClicked() { let loginManager = LoginManager() loginManager.logIn(permissions: ["email"], from: self) { result, error in // Process result or error } }
Anda harus memeriksa ketersediaan token yang ada sebelum memanggil loginManager
. Lihat Facebook Login untuk iOS
Untuk memeriksa izin saat ini, periksa FBSDKAccessToken
.
if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"email"]) { // TODO: publish content. } else { FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager logInWithPublishPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { //TODO: process error or result. }]; }
Periksa FBSDKLoginResult
yang diberikan ke panggilan balik FBSDKLoginManager
atau ke delegasi FBSDKLoginButton
untuk melihat apakah seseorang sudah menolak permintaan izin:
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager logInWithPublishPermissions:@[@"email"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if ([result.declinedPermissions containsObject:@”email”]) { // TODO: do not request permissions again immediately. Consider providing a NUX // describing why the app want this permission. } else { // ... } }];
Saat Anda membuat permintaan Graph API, Anda dapat memeriksa objek NSError
untuk melihat ada kesalahan izin:
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/feed" parameters:@{ @"message" : @"This is a status update" } HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if ([error.userInfo[FBSDKGraphRequestErrorGraphErrorCode] isEqual:@200]) { NSLog(@"permission error"); } }];
Untuk informasi selengkapnya, lihat Penanganan Kesalahan, Facebook SDK untuk iOS.
Gunakan FBSDKLoginManager
untuk meminta izin tambahan atau meminta izin yang sebelumnya ditolak dengan menggunakan metode logInWith*:
. FBSDKLoginManager
akan melihatnya sebagai permintaan ulang berdasarkan ketersediaan [FBSDKAccessToken currentAcccessToken]
.
Anda dapat mengizinkan seseorang untuk menghapus atau mencabut izin tertentu yang sebelumnya diberikan ke aplikasi Anda. Contoh: aplikasi Anda dapat memiliki halaman pengaturan tempat orang dapat menonaktifkan fitur tertentu.
Cabut izin dengan melakukan panggilan ke endpoint Graph API.
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/permissions/email" parameters:nil HTTPMethod:@"DELETE"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { // ... }];
Anda dapat mencabut semua hak istimewa untuk sebuah aplikasi, dengan melakukan panggilan Graph API yang menghapus semua izin. Gunakan kode di Cabut Izin dan ubah jalur permintaan ke /me/permissions
.
Untuk tujuan pengujian, Anda mungkin ingin mencabut otorisasi izin tanpa menggunakan aplikasi Anda. Untuk melakukannya, Anda dapat menggunakan Graph API Explorer.
Get Token
> Get Access Token
.Clear
untuk membatalkan otorisasi aplikasi yang dipilih.Untuk mencabut satu izin:
/me/permissions/{permission-name}
saat menggunakan izin yang ingin Anda hapus untuk {permission-name}
, contoh: email
.GET
ke DELETE
.Submit
.