OAuth: bagaimana cara menguji dengan URL lokal?

154

Saya mencoba menguji tombol OAuth , tetapi semuanya (Facebook, Twitter, LinkedIn) kembali dengan kesalahan yang sepertinya memberi sinyal bahwa saya tidak dapat menguji atau menggunakannya dari URL lokal .

Bagaimana orang biasanya bekerja dalam pengembangan dengan hal-hal OAuth jika mereka semua tampaknya memerlukan lingkungan koneksi non-dev dan non-lokal ?

Keangkeran
sumber
Saya menjawabnya kembali: stackoverflow.com/a/10410838/604511
Jesvin Jose

Jawaban:

133

Perbarui Oktober 2016 : Sekarang termudah: gunakan lvh.me yang selalu menunjuk ke 127.0.0.1.

Jawaban sebelumnya :

Karena permintaan panggilan balik dikeluarkan oleh browser, sebagai respons pengalihan HTTP, Anda dapat mengatur file .hosts Anda atau setara untuk mengarahkan domain yang tidak localhostke 127.0.0.1.

Katakanlah misalnya Anda mendaftarkan callback berikut dengan Twitter: http://www.publicdomain.com/callback/. Pastikan bahwa www.publicdomain.commenunjuk ke 127.0.0.1 di file host Anda, DAN bahwa twitter dapat melakukan pencarian DNS yang sukses di www.publicdomain.com, yaitu domain perlu ada dan panggilan balik khusus mungkin harus mengembalikan pesan status 200 jika diminta.

EDIT :

Saya baru saja membaca artikel berikut: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , yang ditautkan dari pertanyaan ini: Twitter oAuth callbackUrl - pengembangan localhost .

Mengutip artikel:

Anda dapat menggunakan bit.ly, layanan pemendekan URL. Persingkat saja [URL localhost seperti http // localhost: 8080 / twitter_callback] dan daftarkan URL yang dipersingkat sebagai callback di aplikasi Twitter Anda.

Ini seharusnya lebih mudah daripada mengotak-atik file .hosts.

Perhatikan bahwa sekarang (Agustus '14) bit.ly tidak mengizinkan penerusan tautan ke localhost; namun pemendek tautan Google berfungsi.

Sunting PS: (Nov '18): Pemendek tautan Google berhenti memberi dukungan untuk localhost atau 127.0.0.1.

Jon Nylander
sumber
3
Saya pikir server memanggil callbackurl, dan sekarang menyadari jika menggunakan klien sebagai messenger dan tidak ada hubungan yang dibuat antara server yang membuatnya lebih sederhana.
Kristian Benoit
10
Perlu dicatat bahwa lvh.me dimiliki oleh seorang pria bernama Levi Cook (lihat gist.github.com/levicook/563675 ) dan dimiliki secara pribadi. Dia tampak seperti pria yang baik tetapi itu bukan domain resmi resmi oleh otoritas global sehingga mungkin "secara teoritis" berhenti bekerja di beberapa titik waktu.
Mario Peshev
4
Pada saat penulisan, Google tampaknya tidak mengizinkan ekstensi domain mewah (seperti .me) di redirect URL. Akibatnya, lvh.me tidak berfungsi. Saya malah menemukan kesuksesan dengan lacolhost.com .
PullJosh
3
Pemilik lvh.me juga dapat mulai mengumpulkan semua kode otorisasi Anda ...
Taylor Buchanan
2
@JonNylander Mereka dapat dengan mudah mengubah catatan DNS mereka untuk menunjuk ke situs lain yang secara transparan menyimpan kode dan status auth dan masih mengalihkan kembali ke localhost. Kecuali Anda memeriksa DNS secara teratur, Anda tidak akan melihat sampai mereka sudah memiliki akses. Satu-satunya yang akan segera diperhatikan adalah orang yang menggunakannya di luar konteks browser.
Taylor Buchanan
18

Atau Anda dapat menggunakan https://tolocalhost.com/ dan mengkonfigurasi bagaimana seharusnya mengarahkan kembali panggilan balik ke situs lokal Anda. Anda dapat menentukan nama host (jika berbeda dari host lokal, yaitu yourapp.local dan nomor port). Hanya untuk tujuan pengembangan.

Jørgen
sumber
13

Anda juga dapat menggunakan ngrok: https://ngrok.com/ . Saya menggunakannya setiap saat untuk menjalankan server publik di localhost saya. Semoga ini membantu.

Pilihan lain yang bahkan menyediakan domain kustom Anda sendiri secara gratis adalah serveo.net dan https://localtunnel.github.io/www/

pengguna4848830
sumber
1
Ini lebih mudah yang saya pikir! Baru saja membuat akun saya, memasangnya dan berlari ./ngrok http 8080 -host-header="localhost:8080"dan saya menjalankan dengan url publik.
Miguel Reyes
3

Google tidak mengizinkan uji coba auth api di localhost menggunakan http://webporject.devatau .locdan .etc dan tautan singkat google yang mempersingkat url lokal Anda ( http://webporject.dev) juga bit.ly:). Google hanya menerima url yang dimulai http://localhost/...

jika Anda ingin menguji api google auth Anda harus mengikuti langkah-langkah ini ...

atur alias baru

jika Anda menggunakan openserverpergi ke panel pengaturan dan klik aliases tabdan klik pada dropdown kemudian temukan localhostdan pilih.

sekarang Anda harus memilih folder root proyek web lokal Anda dengan mengklik dropdown berikutnya yang berikutnya dropdown pertama.

dan klik tombol yang disebut adddan mulai ulang openever.

sekarang proyek lokal Anda tersedia di tautan ini dan http://localhost/ Anda juga dapat menempelkan url lokal ini ke google auth api ke redirect urlbidang ...

Akbar Mirsiddikov
sumber
3

Anda dapat mengedit file hosts di windows atau linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

resolusi nama localhost ditangani dalam DNS itu sendiri.

127.0.0.1 mywebsite.com

setelah Anda menyelesaikan tes, Anda cukup mengomentari baris yang Anda tambahkan untuk menonaktifkannya

127.0.0.1 mywebsite.com

ramzieus
sumber
Itu berhasil untuk saya, terima kasih. Juga, jika Anda menggunakan misalnya Node.js pada port 3000, gunakan mywebsite.com:3000
flow3r
3

Untuk pengguna Mac, edit /etc/hostsfile. Anda harus menggunakan sudo vi /etc/hostsjika hanya baca. Setelah otorisasi, server oauth mengirimkan URL panggilan balik, dan karena URL panggilan balik itu diberikan pada browser lokal Anda, pengaturan DNS lokal akan berfungsi:

127.0.0.1       mylocal.com
Gireesh
sumber
0

Mengambil Google OAuth sebagai referensi

  • Di Tab klien OAuth Anda

    1. Tambahkan contoh aplikasi URI Anda(http://localhost:3000) ke sumber JavaScript Resmi asal URI
  • Di layar persetujuan OAuth Anda

    1. Tambahkan mywebsite.comke domain yang diotorisasi
  • Edit file host di windows atau linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostsuntuk ditambahkan 127.0.0.1 mywebsite.com (NB Beri komentar jika ada 127.0.0.1 lainnya)

akash
sumber