У меня есть приложение для реагирования на ошибки, которое регистрирует пользователей с помощью Firebase Web SDK. Приложение успешно регистрирует пользователей, и при входе пользователям предлагается авторизовать API Google Classroom, используя следующие области:
['profile', 'email', "https://www.googleapis.com/auth/classroom.courses", "https://www.googleapis.com/auth/classroom.courses.readonly"]
После успешной аутентификации пользователи перенаправляются на панель мониторинга. На этой панели я хочу отобразить их классы Google, в которых они зарегистрированы. Я сохраняю токен доступа с помощью firebase, но когда я захожу, чтобы получить данные из API оставшегося класса Google, я получаю сообщение об ошибке, в котором говорится, что в запросе отсутствуют учетные данные.
Я попытался включить токен доступа в заголовок и URL-адрес напрямую.
Как я могу подписать своих пользователей:
(onSignIn вручную регистрирует пользователя на firebase, используя предоставленный ими код руководства firebase)
googleAuth = async () => {
try {
const result = await Expo.Google.logInAsync({
iosClientId : "MY IOS CLIENT ID IS ACTUALLY SET IN MY CODE",
scopes : ['profile', 'email', "https://www.googleapis.com/auth/classroom.courses", "https://www.googleapis.com/auth/classroom.courses.readonly"],
behavior : 'web'
})
if(result.type === 'success') {
this.onSignIn(result)
console.log(result)
}
}
catch(e) {
console.log("ERROR", e)
}
}
Однажды направленный на приборную панель:
listCourses = async (auth) => {
if(firebase.auth().currentUser) {
const token = await firebase.auth().currentUser.getIdToken()
.then(tkn => {
return tkn
})
.catch(err => {
console.log(err)
return undefined;
})
if(token) {
fetch("https://classroom.googleapis.com/v1/courses?accessToken=" + token, {
method : "GET",
})
.catch(err => {
console.log(err)
})
.then(res => {
console.log(res)
})
}
}
}
Я ожидал получить список классов, аналогичный тому, что произошло, когда я проходил аутентификацию с использованием клиента Oauth2.0 в API отдыха в классе Google (я получил 200 запросов с курсами в массиве)
На самом деле я получил эту ошибку:
401 error
\"message\": \"Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.\",
"url": "https://classroom.googleapis.com/v1/courses?accessToken=MY ACTUAL ACCESS TOKEN",