Не удается получить информацию о пользователе при использовании Google OAUTH2.0 с сервером Hyperledger Composer REST

#oauth-2.0 #hyperledger-fabric #hyperledger-composer #google-oauth

#oauth-2.0 #hyperledger-fabric #hyperledger-composer #google-oauth

Вопрос:

Я создал REST-сервер в соответствии с инструкциями, используя Google OAUTH2.0 с REST-сервером, и я добился успеха. Затем я создал приложение для клиента с использованием angular. Я получил токен после того, как пользователь вошел в систему и успешно взаимодействовал с API REST server.

Проблема в том, что когда я использую этот токен для получения информации о пользователе, такой как имя, адрес электронной почты, … из Google api, он всегда возвращает ошибку «Недопустимые учетные данные». API, который я использую для получения информации, является https://www.googleapis.com/oauth2/v3/userinfo .
Пример: https://www.googleapis.com/oauth2/v3/userinfo?access_token=u2dDxaEeECKPAv6HlhQ1eMULWNADvVDHbGTlUjnS7jfUII0fwiHvkzYGD0FmZjuf

В чем моя проблема? Приветствуются любые идеи.

Ответ №1:

Конечная точка https://www.googleapis.com/oauth2/v3/userinfo требует авторизации.

Это означает, что вам необходимо включить HTTP-заголовок Authorization: Bearer <AccessToken> для вызова этой конечной точки.

Вот пример в Go:

 func displayUserInfo(accessToken string) {
        endpoint := "https://www.googleapis.com/oauth2/v3/userinfo"

        req := HttpRequest.NewRequest()

        req.SetHeaders(map[string]string{"Authorization": "Bearer "   accessToken})

        res, err := req.Get(endpoint)

        if err != nil {
                fmt.Println("Error: ", err)
                return
        }

        body, err := res.Body()

        if err != nil {
                fmt.Println("Error: ", err)
                return
        }

        fmt.Println(string(body))
}