这仅适用于 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);
});
}