4

Я использую это:Google EndPoint Аутентификация с Firebase от Google App Engine - Нет аутентификации маркер не содержится в запросе HTTP

  • Front End с помощью Google App Engine (GAE) в яваскрипта разделе

<script src="https://www.gstatic.com/firebasejs/3.6.8/firebase.js"></script> 
 
    <script> 
 
    // Initialize Firebase 
 
    var config = { 
 
     apiKey: "XXXXX", 
 
     authDomain: "id-aplication.firebaseapp.com", 
 
     databaseURL: "https://id-aplication.firebaseio.com", 
 
     storageBucket: "id-aplication.appspot.com", 
 
     messagingSenderId: "00000" 
 
    }; 
 
    firebase.initializeApp(config); 
 
    </script> 
 

 
      function init(){ 
 
     
 
     \t var apiRoot = "//id-aplication.appspot.com/_ah/api"; 
 
     \t gapi.client.load('Api', "v1", callback, apiRoot); 
 
     \t 
 
     } 
 
     
 
     function createUserFirebase(){ \t 
 
     \t var user = firebase.auth().currentUser; 
 
     \t var request = gapi.client.Api.createUserFirebase(user); 
 
     \t request.execute(callBackResponse); 
 
     } 
 
     
 
     
 
     function callback(){ 
 
     \t 
 
     
 
     \t btn = document.getElementById("input_create_user_firebase"); 
 
     \t btn.onclick=function(){createUserFirebase();}; 
 
     \t btn.value="Click me for Create User Firebase"; 
 
     
 
     \t 
 
     }

  • BackEnd с G oogle Облако EndPoint

@Api(name = "Api", 
 
\t version = "v1", 
 
\t namespace = 
 
\t \t @ApiNamespace( 
 
\t \t \t ownerDomain = "api.example.com", 
 
\t \t \t ownerName = "api.example.com", packagePath = ""), 
 
\t issuers = { 
 
     @ApiIssuer(
 
     name = "firebase", 
 
     issuer = "https://securetoken.google.com/id-aplication", 
 
     jwksUri = "https://www.googleapis.com/robot/v1/metadata/x509/[email protected]") 
 
    }, 
 
    issuerAudiences = { 
 
     @ApiIssuerAudience(name = "firebase", audiences = "id-aplication")} 
 
    ) 
 
\t public class SharedRoadApi { 
 
\t \t @ApiMethod(
 
\t \t \t name = "firebase_user", 
 
\t \t \t httpMethod = ApiMethod.HttpMethod.GET, 
 
\t \t \t authenticators = {EspAuthenticator.class}, 
 
\t \t \t issuerAudiences = {@ApiIssuerAudience(name = "firebase", audiences = {"id-aplication"})} 
 
\t \t \t ) 
 
\t \t public Email firebase_user(User user) throws UnauthorizedException { 
 
\t \t \t if (user == null) { 
 
\t \t \t throw new UnauthorizedException("Invalid credentials"); 
 
\t \t \t } 
 

 
\t \t \t Email response = new Email(); 
 
\t \t \t response.setEmail(user.getEmail()); 
 
\t \t \t return response; 
 
\t \t } 
 
\t }

  • Аутентификация с Firebase

следующие шаги:

  • Войти с Firebase аутентификации
  • Вызвать метод Java в Google Cloud EndPoint, и это не дают в messae «Недействительные учетные данные», это значит, что аутентифицировать
  • Но даже если вы входите метод даст ошибку,

ком .google.api.server.spi.auth.EspAuthenticator Аутентификация: Ошибка аутентификации: com.google.api.auth.UnauthenticatedException: нет аутентификации маркер не содержится в запросе HTTP (EspAuthenticator.java:86)

Буду признателен, если кто-нибудь скажет мне, что мне делать конкретно или добавить, большое спасибо.

ответ

0

любая ссылка на gapi.client.Api.createUserFirebase (пользователь)? Я не смог найти какой-либо документ или код реализации этого метода.

BTW, так как у меня недостаточно репутаций, чтобы добавить комментарий, мы будем использовать этот поток, чтобы собрать более подробную информацию, чтобы помочь устранить эту проблему. Мы скоро заменим это реальным ответом.

+0

Привет, Wencheng, gapi.client - это то, как вы называете любое приложение Google EndPoint, а @Api (name = «Api»), в этом случае имя моего приложения «Api» - причина, по которой вы используете gapi .client.Api и createUserFirebase - это, наконец, java-метод, который я создаю. –

+0

Это должен быть комментарий, а не ответ. – VPK

+0

Глядя на ошибку, кажется, что клиент Javascript не прикрепляет токен аутентификации с запросом. Для аутентификации запроса конечным точкам требуется, чтобы JWT подключался с заголовком HTTP-заголовка HTTP в формате «Авторизация: предъявитель $ {JWT}». Если вы используете Javascript-клиент в браузере, можете ли вы открыть консоль dev, чтобы узнать, какие заголовки установлены в исходящем HTTP-запросе?В Chrome это можно найти на вкладке сети. –

1

Необходимо проверить подлинность клиента: сервер конечных точек ожидает аутентификации от клиента, но не получает его. Более мелкозернистая информация содержится в документе Using Endpoints in a JavaScript Client, в частности в подразделе «Добавление поддержки аутентификации с помощью OAuth 2.0».

Смежные вопросы