it-swarm.com.de

Erhalten Sie weiterhin ein "Tageslimit für nicht authentifizierte Verwendung überschritten. Für die fortgesetzte Verwendung ist eine Anmeldung erforderlich", wenn Sie versuchen, in meiner Web-App Google Plus-Login durchzuführen

Ich versuche, Google Plus zu implementieren und mich in meiner Web-App zu registrieren. Ich habe die Google-Dokumente befolgt, um die Anmeldung einzurichten. Wenn ich jedoch nach dem Akzeptieren von Berechtigungen und dem Verwenden des Zugriffstokens versuche, ein an mich zurückgesendetes api-restcall zurückzugeben, bringe ich das zurück Tageslimit für nicht authentifizierte Verwendung überschritten. Die fortgesetzte Verwendung erfordert einen Anmeldefehler. Ich habe meine App bereits mit einem Ouath 2.0-Schlüssel angemeldet, so dass ich anscheinend nicht verstehe, was ich falsch mache. Hier ist mein Code.

Cient Seite

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");
                    }
        }

Hier ist mein serverseitiger Code

 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);

            }
40
Michael Nana

Ich hatte auch den gleichen Fehler - "Tageslimit für nicht authentifizierte Verwendung überschritten. Für die fortgesetzte Verwendung ist eine Anmeldung erforderlich".

Ich habe meine Google Developer Console unter APIs für das mit dem API-Schlüssel/Authentifizierungsschlüssel verknüpfte Projekt überprüft, z. B. https://console.developers.google.com/project/<your app id>/apiui/api. Der Status für Google + API wurde auf OFF gesetzt. Ich habe es eingeschaltet.

Ich bekam dann ein weiteres Zugriffstoken und versuchte es mit dem neuen. Es hat funktioniert, dh der Fehler war weg und ich bekam die Profildetails. Um zu überprüfen, ob dies tatsächlich die Ursache des Fehlers war, ging ich zurück zur Konsole und deaktivierte die Google+ API. Aber jetzt bekomme ich den Fehler:

"Zugriff nicht konfiguriert. Verwenden Sie die Google Developers Console, um die API für Ihr Projekt zu aktivieren."

Daher bin ich nicht zu 100% sicher, dass die Google+ API in meiner Entwicklerkonsole aktiviert/deaktiviert wurde. Stellen Sie jedoch sicher, dass diese Option aktiviert ist. Warten Sie nach dem Einschalten noch einige Minuten, und stellen Sie sicher, dass Sie jedes Mal ein neues Token erhalten, bevor Sie es versuchen.

26
user3392439

Dieses Problem tritt auf, wenn Sie bereits angemeldet sind und immer noch versuchen, sich erneut anzumelden. Ich hatte den gleichen Fehler, also einige Experimente. 1) Ich habe die Website auf meinem Handy geöffnet und alles war in Ordnung. 2) Dann probierte ich einen anderen Laptop aus und benutzte ein anderes Google Mail-Konto, um mich anzumelden, und es funktionierte wieder gut. 3) Auf meinem ersten Laptop habe ich wieder durch Anklicken des "Signin" -Buttons die gleiche Fehlermeldung erhalten, also habe ich google.com geöffnet, mich dann komplett abgemeldet und es erneut versucht. Diesmal hat es funktioniert. Ich glaube also, das Problem ist immer und immer wieder, ohne sich abzumelden.

Ich bin mir nicht sicher, ob dies wirklich ein Problem ist, aber zumindest habe ich das gefunden. Ich versuche immer noch, versuche und versuche, werde posten, wenn ich etwas anderes finde.

Prost !!

9

google api

Stellen Sie sicher, dass Sie Google+ API hier aktiviert haben.

Ohne sie erhalten Sie Fehler wie: 

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

Um es zu aktivieren:

1) Öffnen Sie https://console.developers.google.com

2) wähle dein Projekt (obere rechte Ecke)

3) Suchen Sie im Suchfeld nach "Google+ API" und aktivieren Sie es, falls es noch nicht aktiviert ist.

9
Mantas D

Also bin ich auf dieses Problem gestoßen und die beiden oben genannten Methoden/Lösungen (API-Zugriff aktivieren und Konten abmelden) funktionierten nicht für mich, da für Google + Anmeldung das Zugriffstoken im Berechtigungsheader des http-Aufrufs übergeben werden muss.

So machen Sie es mit jQuery:

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

Es scheint, dass Ihr Problem mit dem serverseitigen Code zusammenhängt, bei dem Sie access_token in den Parametern übergeben (was nicht erforderlich ist).

Hier ist mein Versuch, wie die Implementierung von PHP aussehen würde:

$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);'
8
superjisan

Sie müssen die apiKey mit der URL hinzufügen:

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

Hoffentlich senden Sie dieses Zugriffstoken über https! Es kann sinnvoll sein, stattdessen den Code zu verwenden und auf der Serverseite einen Zugriffstoken zu tauschen. Um die Sicherheit zu verbessern, gibt es hier eine Dokumentation: https://developers.google.com/+/web/signin/server-side-flow

In Bezug auf das Problem, das Sie sehen, scheint das Zugriffstoken schlecht zu sein oder das Problem nicht richtig zu durchlaufen. Können Sie das Zugriffstoken, das Sie erhalten, gegen den Tokeninfo-Endpunkt überprüfen: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= - das gültige Informationen anzeigen sollte. Nichts sticht im Code hervor, aber wenn das Token verstümmelt wird, wird möglicherweise ein ähnlicher Fehler angezeigt. 

5
Ian Barber

Ich habe das gleiche Problem

1
Minh Tiến

Ich war auch verzweifelt und endlich konnte ich eine Lösung finden. Das einzige Problem ist, das richtige API-Token hinzuzufügen, das mit Ihrer App verknüpft ist. In meinem Fall war das Browser-Token das alles und es funktioniert.

Beispiel: Ich wollte alle mit meinem Kalender verbundenen Ereignisse haben

https://www.googleapis.com/calendar/v3/calendars/ {calendar_id}/events? & key = {api_key}

vielleicht helfe ich jemandem, der das gleiche Problem hat.

Viel Glück

1

Ich hatte ein Problem auf der JavaScript-Seite (Clientseite) ..__ In meinem Fall musste API_KEY zu gapi.client.init() hinzugefügt werden.

Voll meine Funktion:

async function initClient () {
  return new Promise((resolve, reject) => {
    const API_KEY = "YOUR_GOOGLE_API_KEY"
    const CLIENT_ID = "YOUR_GOOGLE_OAUTH2_CLIENT_ID"
    const DISCOVERY_DOCS = ['https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest']
    const SCOPES = 'https://www.googleapis.com/auth/youtube.readonly'

    const initData = { apiKey: API_KEY, clientId: CLIENT_ID, discoveryDocs: DISCOVERY_DOCS, scope: SCOPES }

    gapi.client.init(initData).then(function () {
        // YOUR CODE HERE
    }, function (error) {
      reject(new Error('Reject Error: ' + error))
    })
      .catch(err => console.log('Catch Error', err))
  })
}

API_KEY und CLIENT_ID können aus here entnommen werden (Google Cloud Platform -> APIs & Services -> Anmeldeinformationen -> Anmeldeinformationen [Tab])

0
TitanFighter

Ich hatte gerade das gleiche Problem und fand heraus, was los war.

Wenn Sie Ihre Google Plus-API in Ihrer Bibliothek aktivieren, müssen Sie zusätzliche Schritte ausführen, um sie vollständig zu aktivieren. Sie müssen auf der Seite der Google Plus-API-Bibliothek auf die Schaltfläche "Verwalten" klicken und zwei Fragen beantworten und abschicken. Das ist alles!!

Dies hat mein Problem behoben und ich hoffe, dass es auch Ihr Problem behebt. Hier ist der Screenshot der Seite, auf der ich aufgenommen wurde, nachdem ich auf die Schaltfläche "Verwalten" geklickt habe, auf der "Anmeldeinformationen zu Ihrem Projekt hinzufügen" steht.

Google Plus API Library Add credentials to your project

0
Anil

Ich habe versucht, mit access_token den Namen und das Bild eines wiederkehrenden Benutzers abzurufen, wenn er sich bereits in einer vorherigen Sitzung angemeldet hat. Nach dem Einlaufen in die "unauthenticated use"-Fehlermeldung funktionierte dies schließlich über cURL in PHP.

//initialize provider specific params for oauth2
$access_token = <fetched from app database from last login> //remember to never expose this to users
$api_url = 'https://www.googleapis.com/plus/v1/people/me';
$headers = [
    'Authorization: Bearer '.$access_token
];

//send curl request
$curl = curl_init();
$curl_opts = [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 0, //GET
    CURLOPT_TIMEOUT => 30,
    CURLOPT_SSL_VERIFYPEER => 1,
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_URL => $api_url,
    CURLOPT_HTTPHEADER => $headers,
];
curl_setopt_array($curl, $curl_opts);
$curl_response = json_decode(curl_exec($curl), true);
$curl_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

//parse curl response from provider into name and icon fields for my app
$name = $curl_response['displayName'];
$icon = $curl_response['image']['url'];

Beachten Sie, dass https://www.googleapis.com/plus/v1/people/me (für die Rückgabe von Benutzern über access_token) und https://www.googleapis.com/oauth2/v4/token (für die erste Anmeldung über code) den Benutzernamen und das Bild in verschiedenen Feldern/Strukturen zurückgeben.

0
OXiGEN

In meinem Fall passierte es zu einer bestimmten Tageszeit, nach ein paar Stunden fand ich schließlich heraus, dass meine tägliche Kontingentgrenze ( Abfragen pro 100 Sekunden ) aufgrund einer hohen Anzahl von Anfragen zu diesem Zeitpunkt überschritten wurde. also warf es den fehler. Ich habe den Google-Support kontaktiert, um sie zu erhöhen.

0
Thamaraiselvam

In meinem Fall war es, weil ich ein altes Zugriffstoken verwendete. Sie müssen bedenken, dass Zugriffstoken eine kurze Lebensdauer haben. Daher müssen Sie das Aktualisierungstoken verwenden, um ein neues Zugriffstoken zu erstellen. Beispiel (mit einer PHP Klasse):

// Get the access token from DB or filesystem
$accessToken = $this->getAccessToken();
// Set the access token
$this->client->setAccessToken($accessToken);

// Refresh the token if it's expired.
if ($this->client->isAccessTokenExpired()) {
    $this->client->fetchAccessTokenWithRefreshToken($this->client->getRefreshToken());
    // Save the new access token to DB or filesystem
    $this->saveAccessToken($this->client->getAccessToken());
}
0
Nahuel