पर सही फायरबेस एथ id_token ढूँढना मैं वर्तमान में Angular 1.5.8
, Firebase 3.3.0
, और AngularFire 2.0.2
का उपयोग कर रहा हूं। जब मैं $firebaseAuth.$signInWithPopup
पर कॉल करता हूं, तो वादा एक अग्निशामक उपयोगकर्ता के साथ आता है जिसमें firebase.user.idToken
शामिल है, लेकिन जब मैं $onAuthStateChanged
पर कॉल करता हूं, तो फ़ायरबेस उपयोगकर्ता .user
संपत्ति के साथ वापस नहीं आता है। $ OnAuthStateChanged फ़ंक्शन से सर्वर प्रमाणीकरण के लिए उपयोग करने के लिए सही टोकन क्या है?
मैं md
संपत्ति का उपयोग कर रहा था, लेकिन फिर यह काम करना बंद कर दिया और kd
संपत्ति पर स्विच कर दिया और मुझे एहसास हुआ कि प्रत्येक उपयोगकर्ता के पास यह नहीं है। क्या यह _lat
संपत्ति है? ऐसा लगता है कि इस तरह से काम करता है, लेकिन मुझे इसके आसपास कोई दस्तावेज नहीं मिल रहा है। या क्या यह एथ स्टेट चेंज पर टोकन का उपयोग करने का सही तरीका नहीं है? क्या कोई सर्वोत्तम अभ्यास है? यहां वह वस्तु है जिसे मैं वादे से वापस कर रहा हूं।
मैं छवि के लिए appologize, लेकिन क्या अजीब है कि अगर मैं JSON.stringify (firebaseUser) और इसे प्रिंट, मैं एक पूरी तरह से अलग वस्तु के साथ अंत जहां firebaseUser.stsTokenManager.accessToken
मुझे सही कुंजी देना होगा है, लेकिन अगर मैं firebaseUser.stsTokenManager.accessToken
आज़माता हूं तो यह कहता है कि stsTokenManager
अपरिभाषित है।
{
"uid": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"displayName": "Luke Schlangen",
"photoURL": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"email": "[email protected]",
"emailVerified": true,
"isAnonymous": false,
"providerData": [
{
"uid": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"displayName": "Luke Schlangen",
"photoURL": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"email": "[email protected]",
"providerId": "google.com"
}
],
"apiKey": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"appName": "[DEFAULT]",
"authDomain": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"stsTokenManager": {
"apiKey": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"refreshToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"accessToken": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"expirationTime": XXXXXXXXXXXXXXXXXXXXXXXXXX
},
"redirectEventId": null
}
कोड के सभी अब कार्यात्मक लगता है और प्रत्येक उपयोगकर्ता के लिए काम कर रहा है, लेकिन मैं सोच रहा हूँ, वहाँ इस के लिए एक सबसे अच्छा अभ्यास है? क्या मुझे कनवर्ट करने के लिए JSON
का उपयोग करना चाहिए और फिर उस ऑब्जेक्ट से संपत्ति का चयन करना चाहिए? या _lat
इस कुंजी को पकड़ने का सही तरीका है?
var app = angular.module("sampleApp", ["firebase"]);
app.controller("SampleCtrl", function($scope, $firebaseArray,
$firebaseAuth, $http) {
var auth = $firebaseAuth();
$scope.logIn = function login(){
auth.$signInWithPopup("google").then(function(firebaseUser) {
console.log("Signed in as:", firebaseUser.user.displayName);
}).catch(function(error) {
console.log("Authentication failed: ", error);
});
};
auth.$onAuthStateChanged(function(firebaseUser){
// firebaseUser will be null if not logged in
if(firebaseUser) {
// This is where we make our call to our server
$http({
method: 'GET',
url: '/secretData',
headers: {
id_token: firebaseUser._lat
}
}).then(function(response){
$scope.secretData = response.data;
});
}else{
console.log('Not logged in.');
$scope.secretData = "Log in to get some secret data."
}
});
$scope.logOut = function(){
auth.$signOut().then(function(){
console.log('Logging the user out!');
});
};
});
पूर्ण कोड github
हम किस संस्करण के साथ काम कर रहे हैं? मुझे लगता है कि यह एंगुलरफायर है लेकिन इसका यहां भी उल्लेख नहीं किया गया है। – Kato
नवीनतम संस्करण आज खींचे गए। मेरा रेपो GitHub.com/LukeSchlangen/nodeFire –
कोणीय 1.5.8, फायरबेस 3.3.0, और कोणीयफायर 2.0.2 पर है। – Kato