8

Google Drive ile entegre edilecek ve yüklenecek bir web uygulaması oluşturmaya çalışıyorum. Kullanıcı, uygulamamın dosyalarını sürücülerinde oluşturabilir ve paylaşabilir. Firebase'i kullanarak yazmaya çalışıyorum, böylece buradaki yeni özelliklerin çoğunu kaldırabilirim. Ancak, bu iki platformda tutarlı bir şekilde çalışmak için auth alma konusunda sorun yaşıyorum.Google AccessToken Firebase'de Nasıl Yeniliyor? #AskFirebase

Bu, yalnızca istemci tarafındaki bir uygulama (en azından şimdilik), bu nedenle çevrimdışı kimlik doğrulama ve yenileme belirteçlerini kullanamıyorum.

Firebase auth'dan önce Google Identity Toolkit with gapi'u kullanırdım. Bu genellikle iyi çalışır, ancak mobil uyumlu olmayan bir açılır akış kullanır.

gapi.signin2.render(elementId, { 
     longtitle: true, 
     width: 230, 
     height: 50, 
     theme: "dark" 
    }); 

    var auth2 = gapi.auth2.init({ 
     client_id: CLIENT_ID, 
     scope: SCOPES.join(" ") 
    }); 

    auth2.isSignedIn.listen(signinChanged); 
    auth2.currentUser.listen(userChanged); 

Gapi biraz hantal, ama işe yarıyor. belirteç erişim zamanki gibi

gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse(true)); 

arayarak elde edilebilir, erişim belirteci sadece sona ardından yaklaşık bir saat sürer ve. önemli, yenilenmiş erişim belirteci almak için GoogleUser.reloadAuthResponse() numaralı telefonu arayabilmemizdir. Not, bu bir yenilenmiş erişim belirteci, bir yenileme belirteci değil!

Teoride, bu erişim belirtecini Firebase ile described here olarak kimlik doğrulaması yapmak için kullanabilirim ve yalnızca popup akışıyla veya try to hack around that ile yaşamak zorundayım.

Tüm bunlara ek olarak, Google Identity Toolkit'in Firebase Authentication ile değiştirildiğini ve yeni uygulamaların Firebase'i kullanması gerektiğini söyledi.

tarihinde Kimlik Toolkit en yeni sürümü Firebase doğrulaması gibi serbest bırakıldı. Şifrelenmiş parola akışları için yükseltilmiş istemci SDK'ları, açık kaynak kodlu UI kitaplıkları, oturum yönetimi ve entegre e-posta gönderme hizmeti 'u içerir.

Yeni projeler Firebase Kimlik Doğrulaması kullanmalıdır. Varolan projeyi Identity Toolkit'ten Firebase Authentication'a geçirmek için, taşıma kılavuzuna bakın .

Quoted from: Google

Firebase Google ile kimlik denetimiyle basit bir API vardır. AccessToken'i kimlik doğrulamasıyla alabilir ve saklayabilirim. Öyle görünüyor ki, auth'u, yeni ve geliştirilmiş Firebase yöntemini uygulamamın yolu budur. Ayrıca Firebase, mobil cihazlarda çalışan güzel bir yönlendirme akışı sağlar.

Ancak, çok büyük bir sorun ...

Bu Erişim Token alacak yoktur.

firebase.auth().getRedirectResult().then(function(result) { 
     if (result.credential) { 
     // This gives you a Google Access Token. You can use it to access the Google API. 
     var token = result.credential.accessToken; 
     // ... 
     } 

     // The signed-in user info. 
     var user = result.user; 
    }) 

erişim belirteci mevcuttur ve bir saat için ... okuma/sürücü yazmaya kullanabilirsiniz. Bu jetonun süresi dolduğunda artık bir şey yapamam. Kullanıcı hala Firebase'de oturum açmış, bu yüzden Firebase hizmetlerini kullanmaya devam edebilirim, ancak sürücüye erişmek için tekrar oturum açmaya zorlamak zorundayım. Bu yapmaz!

Firebase'de GoogleUser.reloadAuthResponse() eşdeğerini arıyorum.

  • Bunu nasıl yapabilirim?
  • Firebase hizmet ve G Suite hem erişen bir web uygulaması oluşturmak için önerilen yolu nedir? herhangi bir resmi örnekler
  • var mı?
+0

Firebase auth ile Google bulut uç noktaları için yönergeleri izleyin (https://groups.google.com/forum/#!msg/firebase-talk/wAcJFfQlFeg/IUuJXNcgDHgJ), bir biraz eski ama yenileme belirtecini nasıl alacağına dair bazı adımları tartıştı. Ayrıca ilgili [forumu] (https://groups.google.com/forum/#!topic/firebase-talk/ZPW3xtwn8g0) Karşılaştığınız sorunla anlatıyor. Bununla ilgili herhangi bir güncelleme olup olmadığından emin değilim, ancak söz konusu çözümü forumda uygulayabileceğinizi düşünüyorum. Bu yardımcı olur umarım. –

+0

Yanıt ve bağlantılar için teşekkürler. Bunlar biraz tarihli, özellikle de Google'ın Firebase'i satın almadan önce düşündüğüm ilk. Google auth'larını kullanmama ve sunucuda sıfırdan bir token ile sıfırdan kendi başıma uygulama konusundaki belirsiz bir yorumdan başka, geçerli bir geçici çözüm görmedim. Google API'leri genişletilmiş kimlik doğrulama desteklemiyorsa, Google kamuya tek saat ötesinde, yerine Kimlik Toolkit Firebase Google Auth kullanarak öneriyoruz neden :( Anlamıyorum. Ben Google'dan birisi cevap ve bazı vereceğini umuyoruz kesin rehberliği. – Gary

cevap

4

Artık google sürücü API'siyle entegrasyonunuz için erişim saatini almak ve her saat yenilemek için gapi'yi kullanıyorsunuz. Buna sadık kal.

var cred = firebase.auth.GoogleAuthProvider.credential(null, gapiAccessToken); firebase.auth().signInWithCredential(cred).then(function(user) { // You are signed in to Firebase now and do not need to re-sign in again. ... });

erişim belirteci GAPI yoluyla yenilenmesi devam ederken şimdi Firebase giriş yapmış olacak: Ne yapmak gereken Google kimlik ile Firebase için imzalamak için aşağıdaki API kullanmak olduğunu. Firebase oturumları belirsizdir, dolayısıyla Firebase'e tekrar giriş yapmanız gerekmez. Herkes

+0

teşekkürler. aslında bu yeni bir uygulamadır. henüz birini yaparak değilim ve bugün itibariyle bunu doğru şekilde yapmaya çalışıyorum. Ben gibi "Firebase kimlik doğrulama kullanmak Google'ın mesajını okumak değil, eski Kimlik Toolkit ben yapmaya çalışıyorum budur Yani ". Ayrıca, benim uygulaması bir _redirect flow_ ihtiyacı ve Kimlik Toolkit bunu resmi bir yol var görünmemektedir. sadece _refresh anlamaya eğer Firebase Auth mükemmel olurdu erişim token_. – Gary

+0

Maalesef GAPI yönlendirme akışını desteklemez ve Firebase erişim belirteçleri yenilemez. ben açıklandığı gibi, sen erişim belirteçleri ve F yenilemek için her iki API'leri (GAPI kullanmak gerekir irebase Auth signInWithCredential). Firebase yoluyla ferahlatıcı OAuth desteklemek için https://groups.google.com/forum/#!forum/firebase-talk bir özellik isteği başvurusunda bulunun. – bojeil

+0

Özellik isteğinin dosyalandığını biliyor musunuz, böylece izleyebilir miyim? Ben aradım ama bulamadım. Teşekkürler! –

0

sadece (bulut son noktalarını google ie) içinde Firebase google işareti kullandıktan sonra, kullanabileceğiniz aramalar kimliği doğrulanmış son nokta için bir simge almaya çalışırken:

var successCallback = function(firebaseIdJsonWebToken) { 
    console.log("token: " + firebaseIdJsonWebToken); 
} 
var errorCallback = function(error) { 
    console.log("error: " + error); 
} 
firebase.auth().currentUser.getIdToken().then(successCallback, errorCallback) 

Firebase id belirteci bir JWT dir signin yönlendirme geriçağırımından kimlik bilgisinden farklı. GetIdToken() işlevi, gerekiyorsa belirtecini yenileyecek ve geri arama için geçerli bir belirteci döndürecektir. İmza yeniden yönlendirme geri bildiriminin kimlik bilgisinde, OP'nin belirttiği gibi 1 saat içinde süresi dolar ve tekrar oturum açmaya çalışmadan yenilenemez.

Eğer Firebase google olarak oturum aramaları doğrulanmış son nokta yapmak istiyorsanız

, getIdToken() kullanın. Sonra Bu [forumu] kontrol etmek isteyebilirsiniz