Вопрос по – Может ли мое расширение получить адрес электронной почты пользователя из Google Chrome?

1

У меня есть расширение, за которое некоторые пользователи вкладывают деньги или усилия. Я хотел бы иметь возможность идентифицировать этих пользователей по их адресам электронной почты, поэтому я могу отобразить "Спасибо!" в следующий раз они загружают расширение.

Есть ли способ получить от Google Chrome адрес электронной почты пользователя?

Почему бы просто не попросить их об этом? Разве это не было бы больше на подъеме и повышении? Cody Gray♦
Я пытался избежать дополнительного взаимодействия с пользователем. Я предполагаю, что только около 0,1% пользователей вносят вклад. Я не хочу требовать, чтобы 100% пользователей вводили свои электронные письма, просто чтобы выяснить, что это не имеет отношения к делу. Но вы правы - это мой "план Б". Shalom Craimer

Ваш Ответ

2   ответа
1

атор, основанный на их аккаунте Google, чтобы я мог хранить некоторые облачные данные для пользователей. Я полагаю, что вы можете получить адрес электронной почты тем же способом, но они должны будут утвердить разрешения. Если я добьюсь успеха, я опубликую код. Сейчас я пытаюсь получить: http://smus.com/oauth2-chrome-extensions/

Работа с моим собственным ключом API Google и тому подобное.

Пока без особого успеха. Потратил последние два часа на реализацию единственного метода, который имеет приличную документацию, и он говорит мне, что эта функция устарела. В конце концов, возможно, стоит попытаться заставить эту хрень oauth2 работать.

Error: User Rate Limit Exceeded Shalom Craimer
Error: User Rate Limit Exceeded
8

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

Но не все это объясняется там. Так:

Прежде всего вам нужен API Client ID и Client Secret, чтобы пользователь мог разрешить вам использовать их данные. Следующие шаги помогут настроить его так, чтобы он работал с расширением Chrome:

Google API Console Create an API Go to API Access Create A Client ID Give it a name and a Logo, This name and logo will be displayed when the user is asked for permission for your application to retrieve their details. Next Select Web Application Click More to get URI and authorized javascript origins Set the Redirect URI to http://www.google.com/robots.txt Delete the javascript origins field so that there is none Click OK or whatever it is, copy the client ID and client secret out for later.

Во-вторых, вам понадобится библиотека JavaScript oauth2, которая доступна здесь: https://github.com/borismus/oauth2-extensions/tree/master/lib

Вам нужно поместить его в папку с именем oauth2 в том же каталоге, что и ваш HTML-файл.

В ваш 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 вам нужно:

& quot; permissions & quot ;: [& quot; https: //accounts.google.com/o/oauth2/token" ;, & quot; 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"   }

Это должно в значительной степени позаботиться об этом.

Error: User Rate Limit Exceeded

Похожие вопросы