1

一部のユーザーがお金や労力を寄付する拡張機能があります。それらのユーザーをメールアドレスで識別できるようにしたいので、「ありがとう!」を表示できます。次回、拡張機能をロードするとき。

Google Chromeからユーザーのメールアドレスを取得する方法はありますか?

4

2 に答える 2

9

よし、解決した。このウェブサイトは基本的にそれを説明しています:

http://smus.com/oauth2-chrome-extensions/

しかし、そこですべてが説明されているわけではありません。そう:

まず、ユーザーが詳細を使用することを承認できるように、API クライアント ID とクライアント シークレットが必要です。次の手順では、Chrome 拡張機能で動作するように設定します。

  1. Google API コンソール
  2. API を作成する
  3. API アクセスに移動
  4. クライアント ID を作成する
  5. 名前とロゴを付けます。この名前とロゴは、アプリケーションが詳細を取得する許可をユーザーに求めたときに表示されます。次
  6. Web アプリケーションを選択
  7. [その他] をクリックして、URI と承認済みの JavaScript オリジンを取得します
  8. リダイレクト URI をhttp://www.google.com/robots.txtに設定します。
  9. javascript origins フィールドを削除して、何もないようにします
  10. [OK] をクリックするか、クライアント ID とクライアント シークレットを後で使用できるようにコピーします。

次に、 https ://github.com/borismus/oauth2-extensions/tree/master/lib から入手できる oauth2 JavaScript ライブラリが必要です 。

これを、html ファイルと同じディレクトリにある oauth2 というフォルダーに入れる必要があります。

あなたのhtmlファイルに次のものを追加してください:

<script type="text/javascript" src="oauth2/oauth2.js"></script>
<script type="text/javascript">
var googleAuth = new OAuth2('google', {
  client_id: ' $(YOUR CLIENT ID HERE) ',
  client_secret: ' $(YOUR CLIENT SECRET HERE) ',
  api_scope: 'https://www.googleapis.com/auth/userinfo.email'
});

googleAuth.authorize(function() {
  // We should now have googleAuth.getAccessToken() returning a valid token value for us 
  // Create an XMLHttpRequest to get the email address 
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() { 
    if( xhr.readyState == 4 ) {
      if( xhr.status == 200 ) { 
        var parseResult = JSON.parse(xhr.responseText);
        // The email address is located naw: 
        var email = parseResult["email"];
      }
    }
  }
  // Open it up as GET, POST didn't work for me for the userinfo 
  xhr.open("GET","https://www.googleapis.com/oauth2/v1/userinfo",true);
  // Set the content & autherization 
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.setRequestHeader('Authorization', "OAuth " + googleAuth.getAccessToken() );
  xhr.send(null);
  // Debugging stuff so we can see everything in the xhr.  Do not leave this in production code 
  console.log(xhr);
});</script>

manifest.json には以下が必要です。

"パーミッション": ["https://accounts.google.com/o/oauth2/token", "https://www.googleapis.com/oauth2/v1/userinfo"]

また、マニフェスト ファイルには次のものが必要です。

"content_scripts": [   {
    "matches": ["http://www.google.com/robots.txt*"],
    "js": ["oauth2/oauth2_inject.js"],
    "run_at": "document_start"   }

それはかなりそれを世話するはずです。

于 2012-05-02T05:19:29.483 に答える
1

私は自分自身に似たようなことをしようとしています。ユーザーのクラウド データを保存できるように、Google アカウントに基づいた ID を取得しようとしています。同じ方法でメールアドレスを取得できると思いますが、権限を承認する必要があります。成功したら、コードを投稿します。今、私は取得しようとしています: http://smus.com/oauth2-chrome-extensions/

私自身のGoogle APIキーとそれを使って作業しています。

これまでのところあまり成功していません。まともなドキュメントがある唯一の方法を実装するのに過去 2 時間を費やしましたが、機能が減価償却されていることがわかりました。結局、このoauth2のがらくたを機能させようとする必要があるかもしれません。

于 2012-05-02T00:59:30.617 に答える