2017-01-26 9 views
1

Мне нужно использовать модификацию для использования firebase json с аутентификацией. Я использую код https://futurestud.io/tutorials/retrofit-2-manage-request-headers-in-okhttp-interceptorКлюч аутентификации Retrofit2 для Firebase

OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 
httpClient.addInterceptor(new Interceptor() { 
@Override 
public Response intercept(Interceptor.Chain chain) throws IOException { 
    Request original = chain.request(); 

    // Request customization: add request headers 
    Request.Builder requestBuilder = original.newBuilder() 
      .header("Authorization", "auth-value"); // <-- this is the important line 

    Request request = requestBuilder.build(); 
    return chain.proceed(request); 
} 
}); 

OkHttpClient client = httpClient.build(); 

Обязательно. Какой ключ для аутентификации из консоли firebase я использую, пожалуйста?

+0

так я могу предположить из ваших комментариев в ответ, что вы не используете Android? – Chisko

ответ

0

Согласно официальному firebase doc:

Чтобы получить маркер доступа вам необходимо использовать учетную запись службы. См. Руководство по использованию учетных записей Google. Вы можете создать учетные данные учетной записи службы в своем проекте Firebase из раздела «Учетные записи службы» консоли Firebase.

GoogleCredential googleCred = GoogleCredential.fromStream(new FileInputStream("service_account.json")); 
GoogleCredential scoped = googleCred.createScoped(
    Arrays.asList(
     "https://www.googleapis.com/auth/firebase.database", 
     "https://www.googleapis.com/auth/userinfo.email" 
    ) 
); 
scoped.refreshToken(); 
String token = scoped.getAccessToken(); 

Использование маркера доступа

База данных REST API принимает access_token = на строку запроса или заголовка Authorization: Bearer для аутентификации запроса с учетной записью службы.

+0

Благодарим за помощь. Я не могу найти обновленную версию json узла firebase с правилами auth! = Null. Моя конечная цель - тестировать уведомление с устройства Android на другое устройство Android. Там мне не нужны учетные данные учетной записи службы, достаточно установить ключ Legacy Server из настройки CLOUD MESSAGING FirebaseConsole. – eurosecom

+0

@eurosecom сделал это для вас? Это помечено Android, и для этого вам нужно будет сохранить json в исходной папке, что не является такой замечательной идеей, если безопасность - это то, о чем вас беспокоит – Chisko

+0

@Chrisko Я не использую Retrofit2 для использования базы данных Firebase , Я использую API базы данных Firebase. У вас есть лучшее решение? – eurosecom