Google Sign In программно - PullRequest
       95

Google Sign In программно

0 голосов
/ 31 августа 2018

Я создаю серверную часть REST (node.js, хотя это и не важно для вопроса), где я аутентифицирую пользователей через Google Sign In.

Вот так выглядит аутентификация и создание пользовательских конечных точек в swagger (я удалил все остальные части для простоты):

openapi: 3.0.0
info:
  version: 0.1.0
  title: XXX API
servers:
  - url: 'https://xxx.herokuapp.com/'
  - url: 'http://localhost:5000/'
paths:
  /auth:
    post:
      summary: Authenticate user
      operationId: authUser
      tags:
        - auth
      parameters:
        - name: googleToken
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/GoogleToken'
      responses:
        '200':
          $ref: '#/components/responses/LoggedUser'
  /users:
    post:
      summary: Create new user
      operationId: createUser
      tags:
        - users
      parameters:
        - name: googleToken
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/GoogleToken'
      responses:
        '201':
          $ref: '#/components/responses/LoggedUser'
components:
  schemas:
    UserId:
      type: string
    GoogleToken:
      type: string
    User:
      type: object
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
  responses:
    LoggedUser:
      description: Successfully logged user
      headers:
        Auth-Token:
          schema:
            type: string
            example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJP
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/User'

Как видите, я использую токен Google для аутентификации и создания пользователя. Как следует из документов, я использую токен Google для аутентификации пользователя и получения его идентификатора Google, электронной почты и т. Д. Вместо того, чтобы отправлять простые googleIds.

Чтобы защитить мой API от непредвиденных сбоев во время разработки, я обычно создаю функциональный тест с помощью таких сервисов, как Soap UI или Assertible. Там вы можете перечислить свои конечные точки и какие ответы вы ожидаете по заданным параметрам.

Проблема, с которой я сталкиваюсь, заключается в том, как программно имитировать вход в Google через мои тесты? У Facebook была функциональность для создания тестового пользователя ссылка , но, очевидно, я не могу найти такое же решение в Документах Google. Конечно, я могу получить один токен Google и жестко закодировать его, но срок его действия довольно короткий (несколько часов).

В нодовой библиотеке Google node.js есть один поток, но без правильного решения: поток github .

Любые предложения о том, как обойти эту проблему, очень приветствуются.

С уважением,

1 Ответ

0 голосов
/ 02 сентября 2018

Запрос на обновление токена для вашей тестовой учетной записи. Затем используйте его для запроса токена доступа в начале каждого теста. См. Как авторизовать приложение (веб или установленное) без вмешательства пользователя?

...