2

这仅适用于 iOS。pc/mac 浏览器似乎没问题。

所以 google plus api 工作得非常好……只要用户登录到 chrome。如果用户在 iphone 或 chrome 上使用 Safari 访问我的网站但未登录,则登录按钮不会执行任何操作。不点击,什么都没有。

这是 html,基本上直接取自 api 站点。

<span id="signinButton" class="span12">
<span
    class="g-signin"
    data-callback="onSigninCallback"
    data-clientid="771400051000-sh72h9d1tu6h14cuvtmt0ohm8ovd7o09.apps.googleusercontent.com"
    data-cookiepolicy="single_host_origin"
    data-requestvisibleactions="http://schemas.google.com/AddActivity"
    data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email">
</span>

这是javascript。我不包括辅助函数,因为我认为它们不是问题。我认为如果他们只是被调用然后他们会工作,我认为问题必须是 onSignInCallback 在未登录到 chrome 时获得 authResult 。如果您想了解更多详细信息,请询问:)

onSignInCallback: function(authResult) {
  gapi.client.load('plus','v1', function(){
    $('#authResult').html('Auth Result:<br/>');
    for (var field in authResult) {
      $('#authResult').append(' ' + field + ': ' +
          authResult[field] + '<br/>');
    }
    if (authResult['access_token']) {
      $('#authOps').show();
      $('#gConnect').hide();
      var email_promise = helper.email();
      email_promise.done(function(email_result) {
            helper.profile(email_result);
        });


    } else if (authResult['error']) {
      // There was an error, which means the user is not signed in.
      // As an example, you can handle by writing to the console:
      console.log('There was an error: ' + authResult['error']);
      $('#authResult').append('Logged out');
      $('#authOps').hide('slow');
      $('#gConnect').show();
    }
    console.log('authResult', authResult);
  });
}
4

0 回答 0