2014-10-02 7 views
2

Google есть проблема с их документом sharing dialog в том, что если пользователь подписан на несколько счета, которые он будет вращаться, а затем сообщает «... в настоящее время недоступны ...»Google API Detect Multiple Account Login

Этого сообщается в stackoverflow, например Can't get Google Drive API share dialog to work when signed into multiple accounts и Google планируют исправление.

В промежутке времени я пытаюсь найти метод, который может надежно определить, зарегистрирован ли пользователь на нескольких учетных записях, позволяя мне показывать только параметр совместного доступа, когда диалог будет работать. Может ли кто-нибудь предложить способ обнаружения нескольких логинов?

ответ

2

Вы не можете проверить, зарегистрирован ли пользователь на нескольких учетных записях, если вы не авторизуете каждую учетную запись через OAuth (что не является приемлемым подходом). Вот мой ужасный обходной путь для этой ошибки.

ОТКАЗ:
1. Это setTimeout наблюдающий :(
2. Это зависит от того, пользователь использует английскую локаль :(:(
3. Это опирается на тот факт, что текст именно:.. Sorry, sharing is unavailable at this time. Please try again later. :(:(:(

var TIME_LIMIT_SECONDS = 35; 
var errorTimer = null; 
var startTime = null; 
// Call this function after you call showSettingsDialog() 
function watchForErrors() { 
    startTime = new Date().getTime(); 
    startErrorTimer(); 
}; 
// Starts the error check 
function startErrorTimer() { 
    errorTimer = setTimeout(function() { 
     var $test = $(".dcs-cd-dcs-c-dcs-eb").filter(function() { return $(this).text().trim() === "Sorry, sharing is unavailable at this time. Please try again later."; }); 
     if ($test.length) { 
      // Message detected...do something 
      console.log("Error Found!"); 
      // Close the share dialog 
      $("span.dcs-cd-dcs-c-dcs-k-dcs-bc[role='button']").trigger("click"); 
      return; 
     } 
     if ((new Date().getTime() - startTime)/1000 < TIME_LIMIT_SECONDS) { 
      // No errors detected. Could be a success at this point 
      startErrorTimer(); 
     } else { 
      // No errors found after 35 seconds - probably a success? 
      console.log("Timeout - Success?"); 
     } 
    }, 200); 
}; 

Что я могу сделать, это показать сообщение об успешном за диалоге акций, как только я называю showSettingsDialog() Если метод не удается, я закрыть диалоговое окно акций Если метод удастся, пользователь будет клонировать se диалог & см. мое сообщение об успешном завершении.

+0

Ой, что действительно ... ужасно. Вполне возможно, что в глубине мне придется идти, хотя. Мне нужно это рассмотреть - большое спасибо за публикацию. – bleeper