0

通過這段代碼。用google用create-react-native-app和firebase登錄(使用指數)

googleAuthenticate = (token) => { 
const provider = firebase.auth.GoogleAuthProvider(); 
const credential = provider.credential(token) 
return firebase.auth().signInWithCredential(credential) } 


gglogin = async() => { 
const LogInResult = await Google.logInAsync({ 
     androidClientId: '<my-androidClientId>', 
     iosClientId: '<my-IOSClientId>', 
     scopes: ['profile', 'email'] 
}); 

if(LogInResult.type === 'success'){ 
    Alert.alert(
     'Logged in!', 
     `Hi ${user.name}!`, 
    ); 
    this.googleAuthenticate(LogInResult.accessToken) 
} 

}

這是可以得到的用戶名警報,但不能發送令牌通過得到這個錯誤火力地堡。

Possible Unhandled Promise Rejection (id: 0): 
    TypeError: this.addScope is not a function. (In 
'this.addScope("profile")', 'this.addScope' is undefined)` 

請什麼是錯的

+0

你可以分享你app.json或github回購鏈接? –

+0

我在使用博客獨立android應用程序進行谷歌登錄時遇到問題,無法獲取用戶名或個人資料。我只是想檢查你的app.json文件,看看我是否犯了一個錯誤 –

回答

0

我注意到2個問題,證書是一個靜態方法,並且第一個參數是一個ID令牌和第二訪問令牌(你逝去的訪問令牌似乎):

const credential = firebase.auth.GoogleAuthProvider.credential(null, token); 
return firebase.auth().signInWithCredential(credential); 
0

你有你的範圍添加到下面提供商:

var provider = new firebase.auth.GoogleAuthProvider(); 
provider.addScope('profile'); 
provider.addScope('email'); 
firebase.auth().signInWithRedirect(provider); 

請再次檢查這個文件: https://firebase.google.com/docs/reference/js/firebase.auth.GoogleAuthProvider

您需要更改代碼如下:

googleAuthenticate = (token) => { 
const provider = firebase.auth.GoogleAuthProvider(); 
provider.addScope('profile'); 
provider.addScope('email'); 
const credential = provider.credential(token) 
return firebase.auth().signInWithCredential(credential) } 
+0

謝謝兄弟。但仍然不適用於新錯誤 「Google id_token不允許與此應用程序一起使用」 認爲這是因爲我不知道如何在Firebase上進行設置。 –

+0

在您的Firebase帳戶上創建應用程序並使用您的JSON文件,您可以在您的帳戶上創建應用程序後下載它。 – CanDroid