2009-10-09 15 views
8

Google Federated Login'i bir numaralı uygulamalar hesabıyla entegre etmeye çalışıyorum, ancak bazı sorunlara sahibim.Barındırılan Uygulamalar için Google Federasyon Girişi (OpenID + Oauth) - değişen son noktalar?

ben isteği gönderdiğinizde: Bütün parametreleri ile https://www.google.com/accounts/o8/ud (aşağıya bakınız), ben Attribute Exchange tarafından istedi niteliklerin hem request_token ve liste geri almak. Bu, uygulama veritabanımızda kullanıcıyı depolamak için öznitelik exhange (AX) yoluyla e-postaya ihtiyaç duyduğumuzdan ve gelecekteki API requests to scopes (örn: takvim, kişiler, vb.) Için istek belirtecine ihtiyacımız olduğu için mükemmeldir.

Ancak (burada endpoint olarak anılacaktır) bu URL'yi kullanarak bir sorundur barındırılan uygulamalar (gmail, takvim, vd), oturum açmış kullanıcıyı tutmaz.

Bitiş noktasını https://www.google.com/a/thedomain.com/o8/ud?be=o8 olarak değiştirmek her şeyi değiştirir. Diğer google uygulamalarına otomatik olarak giriş yaptım (gmail vb.). Ancak, bu son noktayı kullanarak, yalnızca ya da belirtilerini belirtmek istiyorum. Açıkçası bu özellikle melez değil. Onun çok ya da diğeri. Çalıştığım bu Hybird yaklaşım almaya çalışırken gün boyunca mücadele oldum

parameters = { 
    'openid.ns': 'http://specs.openid.net/auth/2.0', 
    'openid.claimed_id': 'http://specs.openid.net/auth/2.0/identifier_select', 
    'openid.identity': 'http://specs.openid.net/auth/2.0/identifier_select', 
    'openid.return_to':'http://our.domain.com/accounts/callback/', 
    'openid.realm': 'http://our.domain.com/', 
    'openid.assoc_handle': assoc_handle, 
    'openid.mode': 'checkid_setup', 

    'openid.ns.ext2': 'http://specs.openid.net/extensions/oauth/1.0', 
    'openid.ext2.consumer': 'our.domain.com', 
    'openid.ext2.scope': 'https://mail.google.com/mail/feed/atom', 

    'openid.ns.ax':'http://openid.net/srv/ax/1.0', 
    'openid.ax.mode':'fetch_request', 
    'openid.ax.required':'firstname,lastname,email', 
    'openid.ax.type.firstname':'http://axschema.org/namePerson/first', 
    'openid.ax.type.lastname':'http://axschema.org/namePerson/last', 
    'openid.ax.type.email':'http://axschema.org/contact/email',  
} 
return HttpResponseRedirect(end_point + '?' + urllib.urlencode(parameters)) 

(assoc_handle önceden Openid ilk isteği ile başarıyla ayarlanır) https://www.google.com/accounts/o8/ud son nokta

için

Örnek istek, kavga Çoğu opak hata mesajı (This page is invalid ... Google'a teşekkürler) ve tutarlı dokümantasyon eksikliği. Bu noktaya ulaşmak için yapabileceğim her kod örneğini trolledim. Herhangi bir yardım için teşekkür ederiz ...

cevap

7

Kayıt, poster ve bununla ilgili olarak gelebilecek başka herkes için, (gülünç) cevabı belgeleyeceğim.

Sonuçta, sorun sesleniyordu:

return HttpResponseRedirect(
    'https://www.google.com/a/thedomain.com/o8/ud?be=o8' 
    + '?' 
    + urllib.urlencode(parameters) 
) 

bunu yer miyim? Evet, soruna neden olan soru işaretinin açık bir şekilde dahil edilmesiydi. İki sorgu dizesi bir kerede asla mevcut değildir.

İlgili konular