Saya mencoba mengotorisasi pengguna untuk Google calendar API di dalam aplikasi IOS. Saya menggunakan fitur OAuth2 dari Google untuk mengotentikasi pengguna. Halaman otorisasi terbuka dengan kesalahan 403 dengan deskripsi:
Agen-pengguna ini tidak diizinkan untuk membuat permintaan otorisasi OAuth ke Google karena diklasifikasikan sebagai agen-pengguna yang tertanam (juga dikenal sebagai web-view). Sesuai kebijakan kami, hanya browser yang diizinkan untuk membuat permintaan otorisasi ke Google. Kami menawarkan beberapa library dan sampel untuk aplikasi native untuk melakukan permintaan otorisasi di browser.
Saya mengikuti prosedur yang sama dengan yang disebutkan dalam tautan ini: https://developers.google.com/google-apps/calendar/quickstart/ios
Daripada melihat kode saya, lebih baik melihat tautan ini: https://developers.google.com/google-apps/calendar/quickstart/ios karena saya menyalin-tempelkan hal yang sama dalam aplikasi saya.
di bawah ini adalah clientId dan keyChainItemName saya:
static NSString *const kKeychainItemName = @"Google Calendar API";
static NSString *const kClientID = @"954370342601-sgl8k0jrbqdeagea9v6vfu3tspte96ci.apps.googleusercontent.com";
Jawaban singkatnya adalah bahwa Google telah memperbarui pembatasan keamanannya untuk aliran OAuth. Mereka tidak akan mengizinkan tampilan web asli untuk memulai aliran OAuth, melainkan mendorong orang untuk menggunakan browser OS untuk melakukannya. Dalam kasus Anda, Anda mungkin harus menunggu Google calendar SDK untuk memperbarui kode mereka agar mematuhi alur yang baru direkomendasikan. Informasi lebih lanjut tersedia di blog Google
EDIT : Saya telah mencoba membuat plugin lintas platform yang membungkus SDK sign-in Google asli untuk digunakan dalam aplikasi formulir Xamarin. Informasi lebih lanjut dapat ditemukan di sini
Secara default, jika Anda tidak memiliki aplikasi google, Google SDK membuka login di dalam UIWebView
ketika kita memulai login dengan menggunakan metode berikut.
[[GIDSignIn sharedInstance] signIn];
Saya hanya menambahkan satu baris sebelum ini, yaitu sebagai berikut.
[[GIDSignIn sharedInstance] setAllowsSignInWithWebView:NO];
Sekarang google tidak mengotorisasi menggunakan popup UIWebView
. Sebaliknya, ia terbuka di browser Safari. Dan sekarang semuanya berfungsi seperti semula.