問題タブ [google-auth-library]
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.
ubuntu - Apache と Mod-WSGI を使用して Flask から API を実行する際の問題
私は、Apache を実行している Ubuntu 16.04 サーバーでホストされている Flask アプリに取り組んでいます。このアプリは、Google Earth Engine (GEE) を利用しています。
デフォルトでは、GEE はトークンを に格納し、そこからトークンをロード~/.config/earthengine/credentials
します。これは GEE を呼び出すときに問題を引き起こすことはありませんがpython -c
、GEE は Flask 内からトークンにアクセスできないため、実行に失敗します。
つまり、私の Flask アプリ内で呼び出されると、GEE は例外を発生させます。この例外を apacheerror_log
で追跡しましたが、これが問題の原因であると考えています。
デフォルトの認証情報ファイルのパスearthengine/oauth.py
を'. /.config/earthengine/credentials'
. その後も GEE を呼び出すことはできましたがpython -c
、Flask ではうまくいきませんでした。
私は、Flask アプリのコンテキスト内で GEE を使用するための特定の種類のフォルダーを作成し、それを指すことを検討しましearthengine/oauth.py
た。しかし、私はそうすることに非常に警戒しています。
現時点では、これが Flask の問題なのか、Ubuntu の問題なのか、WSGI の問題なのか、それともまったく別の問題なのかわかりません。
一般的に言えば、解決策に近づくのに役立つと思われる 2 つの質問があります。(1) oauth スクリプトが Ubuntu で ~/.config にアクセスできるようにするにはどうすればよいですか? (2) ホーム ディレクトリとして Apache を適切にポイントするにはどうすればよいですか。つまり、どの .conf ファイルを変更してこの問題を解決する必要がありますか?
編集:いくつかの mod-wsgi の問題を読んで、これが何かに関係している可能性があると思いますWSGIPassAuthorization
。もしそうなら、私は正確に何をすべきですか?
更新:ここで提案されているようにファイルのアクセス許可を変更し、oauth.py が指すファイルを に変更しました'/root/.config/earthengine/credentials'
。良いニュース: ファイルへのアクセスに関するエラーが発生しなくなりました。悪いニュース: 明らかに悪い更新トークンが原因でエラーが発生しています。この種のことが時計の問題である可能性があることを確認しましたが、私の時計は問題ないようです。
(私が見ると、時計もきれいに見えntpd -c lpeer output
ます。)
この観点からearthengine authenticate
、資格情報ファイルのトークン値が変更されないことに気付くかもしれません。これは私のローカルでの Earthengine の使用を妨げているようには見えませんが、Flask 内での使用は依然として問題です。
更新:これは、Google サービス アカウントを使用せずに呼び出しを試みた結果であると考えています。
javascript - 着信 JSON オブジェクトに client_email フィールドが含まれていません
firebase クラウド関数を作成しようとしています。したがって、firebase クラウド関数をローカルで実行します。しかし、認証を設定する方法は機能しません。
firebase ツールをインストールしました: https://firebase.google.com/docs/functions/local-emulator
コマンドfirebase login
を実行したので、ログに記録されました。次に、このチュートリアルで json キーを作成しました: https://cloud.google.com/docs/authentication/getting-started
ここでecho $GOOGLE_APPLICATION_CREDENTIALS
、結果を入力する/home/$USER/.google/****.json
と、
また、完全な Google Cloud SDK をインストールしようとしましたが、実行しましたgcloud auth application-default login
が、成功しませんでした。
Npm パッケージのバージョン:
十分な情報を提供したと思いますが、必要に応じてさらに質問してください。
コードは重要ではありません。最も重要なことは、これらの手順をすべて実行しても、firebase をローカルでエミュレートしてfirebase serve
関数をトリガーすると、次のエラーが発生することです: エラー: 着信 JSON オブジェクトには client_email が含まれていません分野
json ファイルに client_email フィールドが含まれていることを確認できます。
Google で認証する方法を教えてください。
ご協力いただきありがとうございます。
android - バックエンド サーバーのない Android アプリで PhotosLibraryClient のユーザーを認証する方法
以前はライブラリを使用して
com.google.apis:google-api-services-photoslibrary:v1-rev1-1.23.0
いましたが、これはリリースされる予定がなく、いくつかのエラーがあるとのことでした。だから私は正しいものに切り替えてみました:
com.google.photos.library:google-photos-library-client:1.4.0
しかし、これは別の認証フローを持っています.
基本的に、すべてのドキュメントと例がクライアントシークレットを参照しているという問題と、FixedCredentialsProvider と PhotosLibraryClient に使用される UserCredentials に必要なアクセストークンを提供する MY サーバー。
しかし、私はサーバーを持っていません - これはスタンドアロンのアプリです。開発者コンソールでクライアント ID を設定するときに、アプリ アクセスのみを指定すると、クライアント シークレットは作成されません (代わりにアプリの署名が使用されます)。そのIDを作成できることを考えると、クライアントシークレットなしでそれを行う方法があるに違いないと思います。
他のライブラリでは、フローは次のとおりです。
GoogleSignInClient.getSignInIntent()
とを使用しstartActivityForResult()
てアカウントを決定します- 成功すると仮定
Task<GoogleSignInAccount>
して、返されたインテントを使用して を作成しますonActivityResult
GoogleSignInAccount
タスクから を取得し、それgetAccount()
からGoogleAccountCredential.usingOAuth2()
Google フォトに必要なスコープを渡すを作成し、次にsetSelectedAccount()
- 作成された資格情報で `PhotosLibrary.Builder() を使用します
ただし、新しいものでUserCredentials
は、クライアント シークレット (以前は不要で、Android ID の生成時に作成されなかった) とアクセス トークンを必要とする を使用する必要があります。
を使用してアクセストークンを取得できるはずですがGoogleAuthUtil.getToken
、後でクライアントシークレットが必要です。また、getToken が機能していません。認証例外が発生しています。私のスコープが間違っているためかもしれませんが、よくわかりません。
https://github.com/erickogi/AndroidGooglePhotosApi/blob/master/app/src/main/java/ke/co/calista/googlephotos/Utils/AccessTokenFactory.ktを使用してトークンを取得することも検討しましたが、クライアント シークレットも必要です。
これは、アカウントに (成功して) サインインし、トークンを取得するアクティビティです。しかし、それとライブラリ クライアントの取得との間のギャップを埋めることはできません。
node.js - エラー: サービス アカウントを使用して GCP プロジェクトを作成しているときに、ユーザーは承認されていません
Google API を使用してプログラムで GCP プロジェクトを作成しようとしています。サンプルコードは次のとおりです。
このコードを実行した後、次のエラーが発生します。
UnhandledPromiseRejectionWarning: エラー: ユーザーは許可されていません。
なぜこのエラーが発生するのか、誰か助けてもらえますか? どうすればこれを修正できますか?
PS
- Google Resource Manager API が有効になっています。
- サービス アカウントには role=owner 権限があります。