2017-11-29 4 views
0

私はGoogleアプリケーションでアクションを構築しており、ユーザーを特定する必要があります(電子メールを取得する必要があります)。 私は次のようにアカウントリンクを実装しました。エンドポイントを所有する必要があるため、ユーザーが自分のGoogleアカウントでログインすると、「googleボタンでログイン」した簡単なWebページをホストしています。 Googleの側ではなく、私)、その時点で私はユーザーとGoogleでのアクションをリダイレクト認証トークンを取得します。 アカウントのリンクを実装したので、今すぐアクセストークンを取得できます。次のステップは何ですか? 私はGETリクエストをいくつかのGoogle APIに送信してメールを返さなければならないと思いますが、問題はJavaScriptのGETリクエストで問題が発生していることです(ヒント:初めてのjavascriptです)。 誰かが私を助けることができますか?GoogleでのアクションからJavaScriptでGETリクエストを送信

答えて

0

ここには2つの潜在的な問題があります.1つは技術的な論理です。

技術的な問題 - Firebaseで実行していますか?あなたはデフォルトの「スパーク計画」(Googleは、を奨励するが、を必要としないものである)Firebase機能を使用している場合

Googleのサービスを除いて、アウトバウンドの関数呼び出しを許可していません。したがって、GET APIコールを作成する場合は、「Blaze Plan」(有料プランとしてリストされていますが、開発やシンプルなデプロイメントに適した無料のレベルの使用法があります)に更新する必要がありますあなたはリンクのアカウントを実装して、トークンを取得すると、あなたがどのようなアカウントをリンクなかった

- - !。

論理の問題?トークン偉大

は、あなたがGoogleをにアクセスする権限を与えていることを表しあなたのユーザーがあなたに代わってサービスを提供することを許可しました。あなたのユーザーはあなたにGoogleにこれを許可する許可を与えました。トークンを使用してユーザーはその許可を与えています。

あなたのユーザーのメールアドレスをお持ちの場合は、トークンをデータベースのインデックスとして使用するか、メールアドレスやその他の主張を含むJWTとして使用できますが、そのメールアドレスを最初の場所。あなたはそれを使用して、Googleがそのユーザーに対して直接持っている電子メールアドレスを取得することはできません。

あなたはは、ユーザー、あなたと一緒に自分のアカウントを作成するときに、自分のメールアドレスのGoogleのアイデンティティサービスを尋ねるためにあなたのサービスを認可し持つことができます - しかし、それはあなたに話をするGoogleのアシスタントを承認するあなたのサービスとは別のプロセスであります。

+0

おかげで行われますが、多分私は私の状況を十分に説明しなかった、私はセットアップリンクアカウントはありません私はサービスを持っていないので、私のサービスのアカウントにユーザーをリンクさせないでください! 私が必要としたのは、ユーザーの電子メールを取得することでした。これを実行する唯一の方法は、明らかにアカウントのリンクを設定することでしたが、アカウントのリンクページは「Googleのページにログイン」です。 私はfirebaseで関数を実行していますが、Googleのapisのいずれかに向けてGETリクエストを行う必要があるため、問題ではありません。 –

+0

質問を更新して、アカウントリンクの実装方法を明確にしてください。通常、Googleでは、エンドポイントをリンクするアカウントとしてサーバーを使用することはできません。 – Prisoner

+0

投稿を編集しました –

0

あなたが探しているGET要求は、これはNode.jsの

に答えて
let accestoken = assistant.getUser().accessToken; 
    const https = require('https'); 
    https.get('https://www.googleapis.com/plus/v1/people/me?access_token=' + accestoken, (resp) => { 

     let jsondata = ''; 
     // A chunk of data has been recieved. 
     resp.on('data', (chunk) => { 
      jsondata += chunk; 
     }); 

     // The whole response has been received. Print out the result. 
     resp.on('end',() => { 
      parsedData = JSON.parse(jsondata); 
      console.log(parsedData); 
      //parsedData.emails[0] is the email address 
     }); 
    }) 
関連する問題