Как запросить разрешения с помощью Google+ Badge API?

Я использую Google+ Badge API для получения подписчиков и +1. Кроме того, у меня есть кнопка «Войти» с помощью Google+ Signin API. Когда я вхожу в систему с помощью кнопки «Войти», он запрашивает разрешение электронной почты. Но когда я хочу подписаться или добавить +1 на страницу Google+, она просит меня войти в систему и никогда не запрашивает разрешения.

    <html>
<head>
  <title>Demo: Getting an email address using the Google+ Sign-in button</title>
  <style type="text/css">
  .hide { display: none;}
  .show { display: block;}
  </style>
  <script src="https://apis.google.com/js/plusone.js" type="text/javascript"></script>
  <script type="text/javascript">
  /*
   * Triggered when the user accepts the the sign in, cancels, or closes the
   * authorization dialog.
   */
  function loginFinishedCallback(authResult) {
    if (authResult) {
      if (authResult['error'] == undefined){
        gapi.auth.setToken(authResult); // Store the returned token.
        toggleElement('signin-button'); // Hide the sign-in button after successfully signing in the user.
        getEmail();                     // Trigger request to get the email address.
      } else {
        console.log('An error occurred');
      }
    } else {
      console.log('Empty authResult');  // Something went wrong
    }
  }

  /*
   * Initiates the request to the userinfo endpoint to get the user's email
   * address. This function relies on the gapi.auth.setToken containing a valid
   * OAuth access token.
   *
   * When the request completes, the getEmailCallback is triggered and passed
   * the result of the request.
   */
  function getEmail(){
    // Load the oauth2 libraries to enable the userinfo methods.
    gapi.client.load('oauth2', 'v2', function() {
          var request = gapi.client.oauth2.userinfo.get();
          request.execute(getEmailCallback);
        });


    // This sample assumes a client object has been created.
    // To learn more about creating a client, check out the starter:
    //  https://developers.google.com/+/quickstart/javascript
    gapi.client.load('plus','v1', function(){
     var request = gapi.client.plus.people.list({
       'userId': 'me',
       'collection': 'visible'
     });
     request.execute(function(resp) {
       console.log('Num people visible:' + resp.totalItems);
     });
    });

    // This sample assumes a client object has been created.
    // To learn more about creating a client, check out the starter:
    //  https://developers.google.com/+/quickstart/javascript
    gapi.client.load('plus','v1', function(){
     var request = gapi.client.plus.people.get({
       'userId': 'me'
     });
     request.execute(function(resp) {
       console.log('Retrieved profile for:' + resp.displayName);
       console.log(resp);
     });
    });
   }




  function getEmailCallback(obj){
    var el = document.getElementById('email');
    var email = '';

    if (obj['email']) {
      email = 'Email: ' + obj['email'];
    }

    //console.log(obj);   // Uncomment to inspect the full object.

    el.innerHTML = email;
    toggleElement('email');
  }

  function toggleElement(id) {
    var el = document.getElementById(id);
    if (el.getAttribute('class') == 'hide') {
      el.setAttribute('class', 'show');
    } else {
      el.setAttribute('class', 'hide');
    }
  }
  </script>
</head>
<body>
  <div id="signin-button" class="show">
     <div class="g-signin" data-callback="loginFinishedCallback"
      data-clientid="MY_CLIENT_ID"
      data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email"
      data-height="short"
      data-cookiepolicy="single_host_origin"
      >
    </div>
  </div>
<!-- Place this tag where you want the badge to render. -->
<div class="g-plus" data-width="210" data-href="//plus.google.com/MY_PAGE_ID" data-rel="publisher" data-theme="dark"></div>
  <div id="email" class="hide"></div>
</body>
</html>

Есть ли способ, с помощью которого я могу запрашивать у пользователей разрешения при входе в систему с помощью кнопки «Подписаться» и «+1»?

Кроме того, если пользователь установил конфиденциальность в полях своего профиля (например, день рождения) на «ТОЛЬКО Я», могу ли я запросить эти поля? Если да, то как?


person spyder    schedule 21.06.2013    source источник


Ответы (1)


1- нет API значков.

2- Вы должны различать - использование функций Google, таких как значки или кнопка +1, которая требует от пользователя входа в Google+ - использование функций вашего сервиса, таких как кнопка входа, которая требует от пользователя подключения своей учетной записи Google+ к вашим услугам

Короче говоря, пользователь должен войти в Google+ (что не требует никаких разрешений, поскольку Google+ является поставщиком удостоверений) и подключиться к вашему сервису/сайту/приложению, для чего требуется разрешение.

person ade    schedule 26.06.2013
comment
1 — да, есть API-интерфейс Google+ Badge. Вот, пожалуйста - developers.google.com/+/web/badge 2 - Я думаю, ты не понял мой вопрос, брат! я хочу получить разрешения от пользователя, когда он нажимает кнопку «Подписаться» или +1. Теперь я могу сделать это только с помощью кнопки входа - person spyder; 26.06.2013
comment
Вы правы, у нас есть Javascript API для отображения значков: developers.google.com. /+/web/badge/#jsapi Ни один из этих значков не имеет обратных вызовов, которые позволили бы вам инициировать действие, когда пользователь нажимает на них. Кнопка +1 имеет обратный вызов, который может привести к вызову вашей функции: developers.google. .com/+/web/+1button Я не советую этого делать, но вы можете настроить свой собственный обратный вызов для родительского элемента и заставить его запускать процесс входа. Фактически вы взламываете функцию пользовательского рендеринга: developers.google.com/ +/веб/вход/ - person ade; 04.07.2013