# #javascript #reactjs #firebase #google-api-js-client
Вопрос:
Как заставить Firebase Auth работать с Google drive api?
Используя react, у меня есть авторизация firebase и Google диск (gapi), которые работают по отдельности, но я изо всех сил пытаюсь объединить их.
С Firebase 9 доступ к Google API стал проще: This gives you a Google Access Token. You can use it to access Google APIs.
Я думаю о том, чтобы получить токен, а затем передать его функции gapi .init
. Однако я не уверен, куда после этого идти. Любые указания в правильном направлении будут высоко оценены!
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth"; onst auth = getAuth(); signInWithPopup(auth, provider) .then((result) =gt; { // This gives you a Google Access Token. You can use it to access the Google API. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken;
Моя реализация gapi:
useEffect(() =gt; { window.gapi.load("client:auth2", initClient); }, []); useEffect(() =gt; { if (authState) { authState.isSignedIn.listen(updateSigninStatus); } }, [authState]); const initClient = () =gt; { try { window.gapi.auth2 .init({ apiKey: "API KEY...", clientId: "CLIENT ID...", scope: "https://www.googleapis.com/auth/drive", discoveryDocs: [ "https://www.googleapis.com/discovery/v1/apis/drive/v3/rest", ], }) .then(() =gt; { const authInstance = window.gapi.auth2.getAuthInstance(); setAuthState(authInstance); }); } catch (err) { console.log(err); } }; const signInFunction = () =gt; { authState.signIn(); updateSigninStatus(); }; const signOutFunction = () =gt; { authState.signOut(); }; const updateSigninStatus = () =gt; { setSigninStatus(); }; const setSigninStatus = async () =gt; { //code... } } };