2013-10-12 4 views
31

私はGoogleアプリを実装しようとしています。私は許可を受け入れた後サインアップをしようとすると、サインアップを設定し、アクセストークンを使用して私に返されたAPIのRestcallは、認証されていない使用の毎日の制限を返します。引き続き使用するにはサインアップエラーが必要です。私は既に2.0のキーでアプリを登録していますので、私が間違っていることを得ることはできません。ここに私のコードです。私のウェブアプリケーションにgoogleプラスログインしようとすると、「認証されていない使用の毎日の制限が超過しています」というメッセージが表示されます

Cientサイド

var clientId = "5XXX000XX.apps.googleusercontent.com"; 
    var apiKey = "AIzaSyCAXE5JSa36jcC*X7HV40SBcIWBiVGUTBE"; 
    var scopes = "https://www.googleapis.com/auth/plus.login"; 
    var accessToken = null; 


     function initer(){ 
      gapi.client.setApiKey(apiKey); 
      //alert("Hello init"); 
      if($("#authorize-button").length>0) 
      $("#authorize-button").click(onLoginClick); 
     } 

     function onLoginClick(){ 
      //$("#modalLoading").modal(); 
      //alert("yeah"); 
      gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, onConnect); 
     } 

     function onConnect(authResult) { 
      //alert("On connect"); 
      if (authResult && !authResult.error) { 
      alert("Hey"); 
      accessToken=authResult['access_token']; 
      triggerLogin(); 
      } else { 
       alert("Error"); 

      } 
     } 


     triggerLogin = function(){ 
     alert("Triggering login"); 
      $("#modalLoading").modal(); 
      $.ajax({ 
       url: window.config.site_root + "account/google_login", 
       type: "POST", 
       data: "access_token="+ accessToken, 
       success: onLogin, 
       error: function(){ 
        onError("Logging In", "starting your session"); 
       } 
      }); 
     } 

     onLogin = function(login){ 
     alert("Login start"); 
      $("#modalLoading").modal("hide"); 
      if(login.operation) 
       location.reload(); 
      else{ 
      alert("Register will start"); 
       triggerRegistration(); 
       } 

     } 

     triggerRegistration = function(){ 

      $("#modalLoading").modal(); 
       $.ajax({ 
        url: window.config.site_root + "account/google_registration", 
        type: "POST", 
        data: "access_token="+accessToken, 
        success: onRegistration, 
        error: function(){ 

         alert("An Error"); 
        } 
       }); 

     } 

     onRegistration = function(data){ 
     alert("Handling register"); 
      $("#modalLoading").modal("hide"); 
      if(data.account_exists) 
       stage.showErrorModal("Account already registered", "There is already an account with that email address, are you sure you created an account using this login method?"); 
      else 
       if(data.operation){ 
        alert("Login now"); 
        triggerLogin(); 
        } 
       else{ 
       alert("Error"); 
        onError("Registering", "creating your account"); 
        } 
     } 

ここに私のサーバー側のコードは

public function google_registration() 
      { 
       $access_token = (isset($_POST["access_token"]) && !empty($_POST["access_token"])) ? $_POST["access_token"] : null; 


       $name = null; 
       $email = null; 
       $account_id = null; 
       $picture = null; 
       $gender = null; 

       try 
       { 
        if($access_token) 
        { 
         $me = file_get_contents("https://www.googleapis.com/plus/v1/people/me?access_token=".$access_token); 
         if($me) 
         { 
          $me = json_decode($me); 
          $name = $me->name.formatted; 
          $email = $me->email; 
          $account_id = $me->id; 
          $picture = $me->image; 
          $gender = ($me->gender == "female") ? 1 : 0; 
         } 
        } 
       } 
       catch(Exception $error) 
       { 
        // let the system handle the error quietly. 
       } 
       return $this->service_registration("google", $name, $email, $account_id, $picture, $gender); 

      } 

答えて

5

がうまくいけば、あなたは、HTTPSを介してそのアクセストークンを送っているです!代わりにコードを使用し、アクセストークンのサーバー側で交換を行うことを検討する価値はあるかもしれません。何もなければ、そのアプローチについてのいくつかの文書がここにあります:https://developers.google.com/+/web/signin/server-side-flow

問題に関しては、見て、それはアクセストークンが悪いのように見えるか、正しく行っていないようです。 tokeninfoエンドポイントに対して受け取ったアクセストークン:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= - が有効な情報を示すはずです。トークンがコード化されている場合は、トークンが混乱している場合は、同様のエラーが表示されることがあります。

21

私も同じエラーが発生しました - 「認証されていない使用の日次制限を超えました。引き続き使用するにはサインアップが必要です」

APIキー/認証キー(例:https://console.developers.google.com/project/<your app id>/apiui/api)に関連付けられたプロジェクトのAPIの下でGoogle開発者向けコンソールを確認しました。 Google + APIのステータスがOFFに設定されました。私はそれをオンにした。

次に、別のアクセストークンを取得してから、新しいトークンを試しました。それはうまくいった、つまり、エラーがなくなり、プロフィールの詳細が得られた。それが実際にエラーの原因であるかどうかを確認するために、私はコンソールに戻ってGoogle+ APIを無効にしました。しかし今、エラーが表示されます:

"アクセスが設定されていません。あなたのプロジェクトのAPIを有効にするには、Google Developers Consoleを使用してください。

私は、デベロッパーコンソールでGoogle+ APIをオン/オフしていることを100%確信していませんが、これがオンになっていることを必ず確認してください。また、電源を入れてから数分待ってから、試してみる前に毎回新しいトークンを取得するようにしてください。

+0

GoogleコンソールでAPIを有効にしました。ありがとうございました:) – Sadman

8

この問題は、既にログインしていて、何度も繰り返しログインしようとした場合に発生します。私は同じエラーに直面したので、いくつかの実験を行った1)私は私の携帯電話でウェブサイトを開いて、すべてうまくいた。 2)その後、別のラップトップで試して、別のgmailアカウントを使ってログインし、もう一度うまくいきました。 3)私の最初のラップトップでは、 "Signin"ボタンをクリックすることによって再び結び付けられました。同じエラーが発生したので、google.comを開いて完全にログアウトしてからもう一度試しました。だから私は、ログアウトせずにログインボタンを何度も何度もクリックしていると思います。

これは本当に問題であるかどうかはわかりませんが、これは少なくとも私が見つけたものです。私はまだ努力しています、試してみて、私が他の何かを見つけたら投稿します。

乾杯!

+0

これは間違いなく私の問題でした。 APIがすべて有効になっていて、すべてを正しく渡していたので非常に混乱しましたが、そのエラーメッセージはひどいです!シークレットウィンドウを開き、すぐに機能しました。通常のブラウザでログアウトしてからもう一度やり直してください。ありがとう! – gleenn

9

google api

Google+ではAPIが、ここで有効になっていることを確認してください。

1)オープンhttps://console.developers.google.com

2)は、プロジェクトを選択してください(右上隅を:

"domain": "usageLimits", 
"reason": "dailyLimitExceededUnreg", 
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", 

がそれを有効にするには、それがなければ

次のようなエラーが出ます

3)検索ボックスで「Google+ API」を検索するすでに有効になっていない場合は有効にします。

+0

この画面はありませんか?それはどこにある ? – Cocorico

+0

私はマイナスを置かなかった、私はちょうど質問をする。私はこのエラーが発生しますが、私のクォータ画面では、私は最大以下です。 – Cocorico

+0

更新された回答、詳細を見つける方法を見つけました –

7

私はこの問題に遭遇し、上記の2つの方法/ソリューション(APIアクセスを有効にし、アカウントを忘れる)はGoogleのログインヘッダーのhttp呼び出し。ここで

あなたはjQueryの経由でそれを行う方法は次のとおりです。

$.ajax({ 
     type: "GET", 
     url: "https://www.googleapis.com/plus/v1/people/me", 
     headers: { 
     "Authorization":"Bearer " + {access_token}, 
     } 
    }); 

あなたの問題は、あなたが(必要ありません)のparamsにaccess_tokenはを渡し、サーバー側のコードであるようです。あなたはURLでapiKeyを追加する必要が

$opts = array(
'http'=>array(
'method'=>"GET", 
'header'=>"Authorization: Bearer ".$access_token 
) 
); 

$context = stream_context_create($opts); 

// Open the file using the HTTP headers set above 
$file = file_get_contents('https://www.googleapis.com/plus/v1/people/me', false, $context);' 
+0

これは私のためにそれを解決!ありがとう。 –

+1

公式のドキュメントでは、Queryパラメータとしてaccess_tokenを渡すことができますが、ヘッダーとして渡されたときにQuery.Itで渡されたときに常にそのエラーを受け取りました。 「access_tokenクエリーパラメーターまたはAuthorization:Bearer HTTPヘッダーのいずれかを含めることによって、APIへの要求にアクセストークンを含めます。リンクは次のとおりです。https://developers.google.com/identity/protocols/OAuth2WebServer – Assil

3

はここでPHPの実装がどのように見えるかの私の試みです

$curl = curl_init('https://www.googleapis.com/urlshortener/v1/url?key=AIza3834-Key'); 
1

私は同じ問題を持っていました、解決策はあります:APIKEYを設定

+0

参考: https://developers.google.com/api-client-library/php/auth/api-keys – truongnguyen1912

0

私はまた絶望的でしたし、最後に私は解決策を見つけることができました。唯一の問題は、アプリケーションにリンクされた正しいapiトークンを追加することです。私の場合はブラウザトークンであり、すべて動作します。

例:私は私のカレンダー

https://www.googleapis.com/calendar/v3/calendars/ {CALENDAR_ID} /イベントに関連付けられたすべてのイベントを持っていると思いましたか? & key = {api_key}

多分私は同じ問題を抱えている人を助けるでしょう。

最終的に私の毎日のクォータの制限(クエリ100秒当たりが)のためにその時を超えたことがわかっ数時間を過ごした後、私の場合は

0

が、それは、一日の特定の時間に起こった幸運多数の要求。それはエラーを投げていた。私はそれらを増やすためにGoogleサポートに連絡しました。

関連する問題