問題タブ [google-api-js-client]
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.
javascript - 既存のアクセス トークンを使用して、Google の gapi ライブラリを使用してクライアント側の JS API 呼び出しを承認しましたか?
いくつかの背景
私は Meteor をアプリケーション フレームワークとして使用しており、accounts-google
パッケージを使用してユーザーを認証しています。アカウント パッケージを使用すると、アクセス トークンの取得や有効期限の更新などの面倒な作業がすべて処理されるため、非常に便利ですMeteor.user()
。
Facebook では、クライアント側の JS ライブラリを簡単にロードMeteor.user().services.facebook.accessToken
し、API のドキュメントを使用して以下のようにグラフ API リクエストを行うことができました。
https://developers.facebook.com/docs/javascript/reference/FB.api
私の問題
ドキュメントには、Google の JavaScript API を参照すると、API 呼び出しを行う場合、リクエストにアクセス トークンが自動的に含まれると記載されていますが、gapi を使用して認可リクエストを処理する場合のみです。
これは、サード パーティの承認パッケージに依存している場合 (またはアプリケーションがクライアント側から離れて Google の認証を処理する場合) には役に立ちません。
gapi.client
ライブラリ メソッドを使用してリクエストで既存のアクセス トークンを使用する方法はありますか?
javascript - App Engine エンドポイント: OAuth2 認証用の Javascript クライアント ライブラリには複数のポップアップが必要です
クライアント側の承認の背後にある概念を正しく理解していますか: エンドポイント API に要求を行うには、呼び出す必要があります
oauth トークンの有効期限が切れるたびに、ポップアップ ウィンドウがトリガーされます。優れたユーザー エクスペリエンスにはならないように思えます。その流れを回避する方法はありますか?
node.js - webpack で google-api-nodejs-client を使用した grunt ビルドのエラー
ReactJS Webpack アプリでhttps://www.npmjs.com/package/googleapisを使用しています。アルファ版であるという警告が表示されるため、問題が発生することが予想されます。これが私が抱えている問題です。
npm install googleapis --save
正常にインストールされ、package.json にgoogleapis
追加されましたが、実行すると次の警告が表示されます (大量のテキストであるため、リクエストに応じて投稿する多くのエラーが続きます)。"googleapis": "^2.0.2"
grunt build
問題のある行~/googleapis/apis/index.js
は次のとおりです。
私が得ているエラーの1つ:
React コンポーネントで googleapis を必要とするコード:
注: コンポーネントのその他のコードは、リクエストに応じて提供できますが、この問題とは関係ないと思います。
私のpackage.json
依存関係:
npm バージョン 2.5.1
ノードバージョン v0.12.1
助けてくれてありがとう!
java - ログインしていない場合のサーバー側のリダイレクト
Cloud Endpoints を使用し、クライアント側の oauth を実行してバックエンドにアクセスしています。これは問題なく動作しますが、ページ全体と添付されたスクリプトが読み込まれ、oauth 要求が完了した後にのみ、アプリの URL にアクセスした人がユーザーであるかどうかを確認できることを意味します。
サーバー側の認証を有効にして、ランディング ページとアプリに同じ URL を使用し、そのユーザーがユーザーの場合はアプリに、そうでない場合はランディング ページにリダイレクトできるようにしたいと考えています。
問題は、ユーザー チュートリアルでは認証にUserServiceを使用するのに対し、Cloud Endpoints ではOAuth Serviceを使用することです。上記にリンクされている OAuth セクションのすべてのリンクは OAuth 1 用であり、非推奨であるため、リダイレクト フィルターで OAuth を使用する方法がわかりません。
訪問者がユーザーであるかどうかをリダイレクト フィルターで確認し、同時にユーザーである場合にエンドポイントを呼び出すために使用できるトークンを取得するにはどうすればよいですか?
私はGoogle Api JS クライアントを使用してクラウド エンドポイントを呼び出しているため、ソリューションはそれと最適に統合され、gapi.auth.setToken(token)
取得したトークンを使用してgapi.auth.authorize(params, callback)
ダンス全体をバイパスします。
java - javaサーバーからgapi javascriptクライアントにgoogle api access_tokenを渡すにはどうすればよいですか?
Tomcat で実行されている Java で AuthorizationCodeFlow を使用して資格情報を取得できます。
今、サーバーで取得したアクセストークンをクライアントに戻そうとしています。これにより、gapi javascript クライアントを使用して、サーバーを経由せずにブラウザーで作業を行うことができます。
次を使用して、gapi にアクセス トークンを設定します。
次に、gapi.client.load を呼び出して、ドライブ クライアント コードを取得します。
次に、関数を呼び出して、Google ドライブでフォルダーを取得または作成します (これは、gapi.auth.authorize() を使用してテストされているため、このままのコードが機能することがわかっています)。
しかし、 getOrCreateFolder で gapi.client.drive.children.list(...) を呼び出すと、応答は
人々がこれを行ったことを示している場所を複数見てきました。しかし、これまでのところ、これを機能させることはできません。
フィドラーでは、次の応答が得られます。
少し編集されたリクエストは次のとおりです。