2011-03-05 7 views
7

Greasemonkey komut dosyasından çok basit bir GAE örneği kullanıyorum. Bu son aylar için iyi çalıştı, ama şimdi benim için giriş işlemini kesen nihai 'devam' konumuna bir yol eklenir.Google App Engine, neden giriş sırasında 'devam' konumuma bir yol ekliyor?

temel iş akışı, kullanıcının kendi Google Hesabınıza giriş, ancak GAE'nin mesela onun belirteç aşımına uğradı varsayımı altında:

  1. Kullanıcı yüklü GM komut dosyası ile A sayfasını açar.
  2. GM komut dosyası çalışır ve bir GM_xmlhttpRequest() ile GAE örneğine erişmeye çalışır.
  3. GAE örneği "login_needed | <loginurl>" değerini döndürür. GM betiği loginurl'u çıkarır ve üzerine window.location'u ayarlar.
  4. Kullanıcı, loginurl'e ve en sonunda A'ya yönlendirilir. Ancak, bu kez, gerçek veriler, GM_xmlhttpRequest() tarafından döndürülür.

Kullanıcı şimdi hedef sitede bir 404 verir LoginUrl artı bazı, yönlendirilir olarak son adım artık, çalışır.

GAE kodu kodun yaklaşık yarısı kadardır. Kimlik doğrulama İlgili kod şudur:

if not users.get_current_user(): 
    self.response.headers['Content-Type'] = 'text/plain' 
    self.response.out.write('login_needed|'+users.create_login_url(self.request.get('uri'))) 

şöyle taleplerin dizisi tüm yönlendirmeler nedeniyle, geçerli:

  • GET https://mygaeinstance.appspot.com/?uri=https: //targetsite.com/
  • GET https://www.google.com/accounts/ServiceLogin?service=ah & pasif = true & devam = https: //appengine.google.com/ _ ah/conflogin % 3Fcontinue% 3Dhttps: //targetsite.com/ & ltmpl = g & ahname = MyGAEInstance & sig = < bir sig >
  • GET https://appengine.google.com/ _ h/conflogin? Devam = HTTPS% 3A% 2F% 2Ftargetsite.com% 2F & pli = 1 & yetkilendirme = < belirteci bir base64 kimlik doğrulama >
  • GET https://targetsite.com/ _ h/conflogin? durumu = < bir base64 durumu >

goalsite.com bu yolu sevmiyor ve gördüğünüz gibi, "https://targetsite.com/" olan appengine.google.com adresine aktarılan ilk 'devam' argümanında değildi. ". Ne yaptım ve bunu nasıl düzeltebilirim?

+0

Listelenen tüm URL'ler dahili App Engine URL'leri içindir. Targetite.com'a nereye yönlendirilir? –

+0

GAE'deki Kullanıcı API'si, GAE web sitesindeki kullanıcıların kimliğini doğrulamak içindir. Kullanıcıları neden başka bir web sitesine yönlendiriyorsunuz? – olivierlemasle

+0

@NickJohnson: targetite.com adresine geri dönüş, [create_login_url()] (https://code.google.com/appengine/docs/python/users/users/functions.html#create_login_url) çağrısının bir parçası. 'devam', buna 'dest_url' diyorlar. Giriş tamamlandıktan sonra GAE'nin yönlendirdiği yerdir. Bunun neden aniden çalışmayı durdurduğunu anlayamazsam, bir geçici çözümün, GAE örneğime yeniden yönlendirmek için bu bağımsız değişkeni kullanmak ve sonra başka bir yönlendirme kullanarak kullanıcıyı tekrar sitit.com'a yönlendirmek olduğunu düşünüyorum. Şimdiye kadar, bir istek/yanıt döngüsü kaydetmeden yapabilirdim. –

cevap

3

App Engine'e yönelik giriş akışımızda yapılan son bir değişiklik, uygulamanın kendi alan adının dışında devam eden bir URL'ye sahip bir girişin, gözlemlediğiniz gibi hatalı bir yönlendirmeyle sonuçlanacağı bir sorun oluşturdu.

Bunu düzeltmek için çalışıyoruz. Bu arada, bir çözüm kendi uygulamanızda bir yönlendirme işleyicisi kurmaktır.Devam parametresinin hedefini yapın ve gerçek hedefinize son bir yönlendirme göndermesini sağlayın.

+4

Bununla ilgili olarak izlenmesi gereken herhangi bir bilet/konu var mı? –

+1

Hala kırık btw., Herhangi bir gelişme var mı? :) –

+1

Hala bunu düzeltmeyi planlıyor musunuz? Sorun izleyicinizde mi? Yanılmadığım sürece –