2012-04-11 44 views
21

node.js sunucumla Google kimlik doğrulama API'sına ulaşmaya çalışıyorum ancak nasıl olduğunu bulamıyorum. Temel olarak, kullanıcının giriş sayfama ulaşmasını, kimlik doğrulama düğmesini tıklamasını istiyorum, ardından sunucu onu Google API'sına yönlendiriyor, kullanıcı uygulamasının verilerine erişmesine izin veriyor ve ardından Google API, kullanıcıyı siteme yönlendiriyor. yetkilendirme belirteci.nodejs ile Google kimlik doğrulaması

Ben OAuth2'ye gerektirdiği url kurdum ve (benim web tarayıcısında yapıştırın, eğer google yetkilendirme sayfasında beni yönlendirir) iş gibi görünüyor. Soruma cevap veren this post'u gördüm, ancak ekspres kod kısmını nasıl kullanacağımı anlamıyorum. İşte

kullanıyorum kodudur:

https.get(options, function(res) { 
    var retrieved_data = ''; 
    res.on('data', function(data) { retrieved_data += data; }); 
    res.on('end', function() { 
     // FIXME 
     client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location}); 
     client_response.end(retrieved_data);  
    }); 
}); 

Fakat bu yöntem (benim ajax isteği hata alanının arttırılmış) Müvekkilimin sayfasında hata verir. HTTP kodunu "Konum" bilgisi olmadan 200 olarak değiştirirsem, istemcide beni Google API yetkilendirme sayfasına yönlendiren bir düğmeyle "Taşınan Geçici Olarak Taşındı" sayfasında görüntülenir.

Herhangi bir öneriniz var mı?

+3

kullanın https://github.com/google/google-api-nodejs-client. –

cevap

9

Bu görev için varolan modülleri kullanmanızı öneririm. everyauth, Google'a yalnızca oauth2 erişimini değil, aynı zamanda sunduğu diğer platformların çoğunu da sağlayan bir modüldür. Projelerimde Twitter erişimi için kullanıyorum. Aynı zamanda entegrasyonuna sahiptir.

Sen The Node Toolbox daha alternatifler bakabilirsiniz. Pasaport akla geliyor.

3
Burada benim node.js + Google Takvim projesini ödeme isteyebilirsiniz

: https://github.com/berryboy/google-calendar

Ben de google oauth kullanarak birkaç örnek var.

+1

Lütfen cevabınızı, bağlantılı makaleden daha fazla içerikle genişletin. – bytebuster

8

I (MS kimlik doğrulama şeması ile ilgili olmayan!) Passport ile iyi sonuçlar elde ettik. Başlangıçta everyauth denedim, ama IMO pasaportu expressjs sözleşmeleri ile daha iyi uyuyor.

kullanıma hazır bir Google yetkilendirme sağlayıcı var: http://passportjs.org/guide/google/

+0

'passport-google' modülünün artık Google tarafından desteklenmeyen OpenID kullandığını unutmayın. Bunun yerine https://www.npmjs.com/package/passport-google-oauth2 adresini kullanın – Luc

İlgili konular