相关疑难解决方法(0)

如何防止favicon.ico请求?

我没有favicon.ico,但IE总是提出请求.

是否可以阻止浏览器请求我的网站的favicon?也许HTML标题中有一些META-TAG?

favicon

492
推荐指数
11
解决办法
28万
查看次数

Google+ signinCallback两次致电并失去了authresult

我的代码中有一个错误.我能够登录并检索用户信息.但又signinCallback被召唤了(我不知道怎么回事).它显示我之前的用户信息已经消失!这是HTML方面:

<span id="signinButton">
    <span
        class="g-signin"
        data-callback="signinCallback"
        data-clientid="CLIENT_ID"
        data-cookiepolicy="single_host_origin"
        data-requestvisibleactions="http://schemas.google.com/AddActivity"
        data-scope="https://www.googleapis.com/auth/plus.profile.emails.read"
        data-width="standard"
        data-height="short">
    </span>
</span>
Run Code Online (Sandbox Code Playgroud)

这是javascript方面:

var AuthStates = {
  google: null
};

function signinCallback(authResult) {
    console.dir(authResult);
    console.log('Sign-in state: ' + authResult['error']+authResult['access_token']);
    AuthStates.google = authResult;
    console.log('signinCallback');
    chooseAuthProvider();
}

function chooseAuthProvider() {
  if (AuthStates.google && AuthStates.facebook) {
    if (AuthStates.google['access_token']) {
      // Signed in with Google, you can now use Google+ APIs.
      console.log(AuthStates.google);
      gapi.client.load('plus','v1', function(){
        var request = gapi.client.plus.people.get({
          'userId': 'me'
        }); 
        request.execute(function(resp) {
          document.getElementById('cname').value =resp.displayName;
          document.getElementById('cemail').value =resp.emails[0].value;
          console.log('Retrieved profile for:' …
Run Code Online (Sandbox Code Playgroud)

html javascript google-plus

29
推荐指数
1
解决办法
1941
查看次数

Google+使用JavaScript回调问题登录

我正在开发一项功能,允许用户使用他们的Google帐户登录我的网站.

我的代码基于Google文档(其他signIn()选项位于元标记中).

function login() {
  gapi.auth.signIn({'callback':
    function (authResult) {
      if (authResult['status']['signed_in']) {
        console.log('Okay');
      }else {
        console.log('Error');
      }
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

当我调用login()时,会出现Google弹出窗口,我批准了我的应用程序的条款,一切正常.

但回调被调用两次:

  • 第一种情况:如果我从未批准过应用程序权限,那么当我批准权限时,将在弹出窗口打开时调用回调.所以它会写"错误"和"好的".
  • 第二种情况:如果我已经批准了权限,它会写两次"好".

'approvalprompt': 'force'在signIn()函数中添加了选项.回调函数不再被调用两次,但它会强制用户批准应用程序的权限,即使之前已批准.所以它不是用户友好的.

是否有友好的用户方式来批准应用程序的权限一次没有两个回调?

谢谢.

javascript callback google-api google-plus google-oauth

10
推荐指数
3
解决办法
9008
查看次数

用户为signed_out时,Google signInCallback会调用两次

我正在使用谷歌登录混合流来验证用户,但我有一个奇怪的错误:当用户退出(authResult['error'] == 'user_signed_out')时,会signInCallback被调用两次!当用户登录时不会发生这种情况,因此我认为它不会与(相当烦人的)"欢迎回来[用户]"提示相关联.

我的代码看起来像这样:

function signInCallback(authResult) {
    console.log("signIn callback called, using " + authResult['status']['method'] + " method");
    console.log("authResult = ");
    console.dir(authResult);

    if (authResult['code']) {
        // do things....
    }else if(authResult.error == "user_signed_out"){
        // do other things...
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在控制台上得到的: console log http://img4.hostingpics.net/pics/968420Capture1.jpg 查看大图

我正在使用的HTML代码:

<div id="signinButton" style="display:<?=(isset($_SESSION['userinfo'])) ? 'none' : 'inline-block'?>">
        <span class="g-signin"
            data-scope="<?=join(' ',$scopes)?>"
            data-clientid="<?=$client_id?>"
            data-redirecturi="<?=$redirect_uri?>"
            data-accesstype="<?=$access_type?>"
            data-cookiepolicy="<?=$cookie_policy?>"
            data-callback="signInCallback"
            data-approvalprompt="<?=$approval_prompt?>"
            data-state="<?=$_SESSION['state']?>"
        ></span>
    </div>
Run Code Online (Sandbox Code Playgroud)

我在两个不同的浏览器上使用两个不同的Google帐户.我最初认为这是由于(谷歌存储在一个cookie中google_account_id和用户状态,如G_USERSTATE_H3 : 'google_account_id#1=0&google_account_id#2=1').但是我在两个浏览器上清除了所有cookie,并且只用了一个浏览器和一个谷歌帐户运行我的测试.我还是得到了这个bug.

这是一个非常讨厌的bug.此外,谷歌Chrome处理得相当好,但是Firefox完全被吓坏了并且执行了三次回调,然后,用户无法登录(他已登录1秒,并立即重新注销).

有人可以帮帮我吗?

更新:这是Google JS Api的包含方式:

<script>
// Asynchronous …
Run Code Online (Sandbox Code Playgroud)

javascript google-api google-login google-oauth google-api-js-client

6
推荐指数
1
解决办法
1077
查看次数