Otentikasi Facebook dan perilaku pengalihan yang aneh

Saat ini saya sedang menguji implementasi OAuth pada facebook connect menggunakan http://facebooksdk.codeplex.com.

Saya memiliki FacebookController dengan 2 tindakan sederhana yang disebut LogOn dan CallBack.

Semuanya berfungsi dengan baik dan pengguna masuk dengan benar ke sistem saya.

Masalahnya adalah ketika tindakan CallBack dipanggil, sesuatu yang aneh terjadi yang membuat semuanya menjadi sederhana

return Redirect(loggedUrl);

mengalihkan ke url login yang benar tetapi diakhiri dengan karakter berikut: #_=_

Tampaknya server Facebook mengirimkan informasi ke server web saya menggunakan header HTTP berikut:

HTTP/1.1 302 Found
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Location: http://mywebsite.com/Facebook/CallBack/?state=1&code=AQCXexr10uxANSBOu9JqrBDxqPkWbsyxM1S9ltuY9XwCXW7eGsOII329SthClxOSM_a7wJvwrXh1_O3D5I7E_nxCDTWDLpyYdMpMUfw4zMWcQ4oV2PmRkIMd2NfPYRKlkLgkurEzka1CjAF1jp8Xb3crklOB59W4IT7LZy6MEmFusuhSKacmsTcV1LAOW4uJ3K4#_=_
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
Pragma: no-cache
Set-Cookie: locale=en_US; expires=Fri, 28-Oct-2011 00:09:38 GMT; path=/; domain=.facebook.com
Content-Type: text/html; charset=utf-8
X-FB-Server: 10.43.103.61
X-Cnection: close
Date: Fri, 21 Oct 2011 00:09:38 GMT
Content-Length: 0

Seperti yang Anda lihat, kita dapat menemukan #_=_ karakter di akhir nilai Lokasi.

Ini seperti Redirect memperhitungkan #_=_ karakter dengan menambahkannya secara otomatis ke logUrl.

Bahkan ketika saya mencoba dengan return Redirect("/");, #_=_ ditambahkan entah dari mana (hampir) ke url pengalihan saya...

Ide apa pun akan sangat dihargai.

Terima kasih sebelumnya atas jawaban apa pun.

Salam,

LB


person user257938    schedule 21.10.2011    source sumber
comment
Hal ini menyebabkan masalah dengan pendengaran hash URL jQuery Mobile. $.mobile.hashListeningEnabled = false; menyelesaikannya.   -  person Petrus Theron    schedule 28.02.2012


Jawaban (1)


Facebook telah memodifikasi mekanisme autentikasinya baru-baru ini dengan menambahkan karakter #= ini di akhir respons mereka. Simbol # di akhir string sebenarnya yang menimbulkan masalah. Jadi Anda bisa memotong kueri dan melakukan pengalihan yang akan berfungsi dengan baik.

person Robin    schedule 21.10.2011
comment
Apa maksud Anda memotong kueri? - person capdragon; 13.06.2012
comment
@capdragon: Ambil urlnya, hapus #= di akhir dan terbitkan kembali permintaan url menggunakan metode apa pun (ajax, redirect, dll.) - person Robin; 30.11.2012