問題タブ [ktor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
678 参照

firebase - AppEngine の Ktor アプリで Firebase Auth が機能しない

問題

Ktor チュートリアルに従ってKtor Kotlin アプリケーションを AppEngine にデプロイすると、Firestore サーバー認証が機能しないため、指定された Firestore データベースにデータが書き込まれません。

アプリが IntelliJ IDE で直接実行されている場合と、コマンドを介してktorの実装で実行されている場合の両方で、データは期待どおりに Firestore に書き込まれgradle appengineRunます。

ステージング環境と本番環境の両方に、AppEngine/Firebase プロジェクトの 2 つのセットがあります。コマンドを使用してデプロイする前に、gradle appengineDeployコマンドを使用して正しい SDK 構成がアクティブ化および検証されているgcloud config configurations list.

ここに画像の説明を入力

奇妙な点は、これらの戦略でデプロイされたいくつかのアプリが Firestore に書き込みを行いましたが、アプリを再度デプロイすると、Firestore は新しいデータが書き込まれていることを示しませんでした。

実装

Ktor セットアップ

標準のktorに必要なファイルがあります。古い実装からの古いMANIFEST.MFファイルもあります。それが問題を引き起こしている可能性はありますか?

src/main/resources/application.conf

src/main/resources/webapp/WEB-INF/

appengine-web.xml

web.xml

logging.properties

.level = INFO

src/main/META-INF/MANIFEST>MF

依存関係

#1-3で概説する認証戦略では、Firebase Admin ライブラリが使用されます。compile 'com.google.firebase:firebase-admin:6.5.0'

認証戦略#4では、Google Cloud Firestore ライブラリが使用されます。compile 'com.google.cloud:google-cloud-firestore:0.58.0-beta'

build.gradle

Firebase 戦略の初期化

1. Google Cloud Platform で初期化する

資格情報が自動的に管理されるため、この方法は有望です。

2.独自のサーバーで初期化する

GCP の [ IAM と管理者] > [サービス アカウント]で、キー ID が認証に使用されている Json オブジェクトと一致することを確認しました。

この戦略を、AppEngine にデプロイされた別の Firestore 接続アプリでうまく使用しています。作業中のアプリは .Jar としてビルドされ、ktorを使用せずに AppEngine に直接デプロイされますが、ここで説明する手順に従います。

私の作業中の.Jarビルドアプリでは、ファイルが見つからないという問題を回避するために、 Jsonオブジェクトをプログラムで渡しています。このktorアプリケーションに対して、同じプログラムによる実装を試みました。展開されたときは機能しましたが、機能しgradle appengineRunませんでした。

3. 独自のサーバーで初期化 (Firebase コンソールのセットアップ)

#2の唯一の違いは、このセットアップが追加すること.setDatabaseUrl("https://yourProjectName.firebaseio.com")です。

ここに画像の説明を入力

4.クラウド Firestore を初期化する

Firestore オブジェクトへのアクセス

#1-3では、Firebase アプリはアプリケーションのmain()メソッドですぐに初期化されます。次に、オブジェクトからFirestoreオブジェクトにアクセスします。

FirebaseClient.Kt

#4では、Firestore オブジェクトが Kotlin オブジェクトで作成さinit{...}れ、値としてオブジェクトに格納されます。

FirebaseClient.Kt

Firestore への書き込み

FirebaseClient.firestore.collection(someCollection).document(someDocument).collection(anotherCollection).add(someObject)

0 投票する
0 に答える
7214 参照

mysql - java.sql.SQLException: 認証プラグイン 'caching_sha2_password' を読み込めません

Ktor アプリケーションで MySQL データベースに接続しようとしています:

...

しかし、次のエラーが表示されます。

java.sql.SQLException: 認証プラグイン 'caching_sha2_password' を読み込めません

なぜそれが起こるのですか?そして、それを修正する方法は?

UPD

最終的に私はそれを修正する方法を見つけました:コマンドでMySQLに新しいユーザーを作成しました

その後、彼にすべての権限を付与し、新しい資格情報で再接続しました。しかし、最初の質問はまだ実際です。

私のmy.iniファイルに。

0 投票する
5 に答える
10430 参照

kotlin - How to log requests in ktor http client?

I got something like this:

and make request like

but I need to check request and response body, is there any way to do it? in console/in file?