59

Web アプリに Google プラス サインアップを実装しようとしています。Google ドキュメントに従ってサインアップをセットアップしましたが、アクセス許可を受け入れてアクセス トークンを使用してサインアップを試みると、私が行った API レストコールが返されます。認証されていない使用の 1 日の制限を超えました。継続して使用するには、サインアップ エラーが必要です。私はすでに ouath 2.0 キーを使用してアプリにサインアップしているので、何が間違っているのかわかりません。これが私のコードです。

セントサイド:

const clientId = "5XXX000XX.apps.googleusercontent.com";
const apiKey = "AIzaSyCAXE5JSa36jcC*X7HV40SBcIWBiVGUTBE";
const scopes = "https://www.googleapis.com/auth/plus.login";
let 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() {
      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() {
      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);

            }
4

15 に答える 15

34

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

APIキー/認証キーに関連付けられたプロジェクトのAPIの下にあるGoogle開発者コンソールに行って確認しましたhttps://console.developers.google.com/project/<your app id>/apiui/api。Google+API のステータスが OFF に設定されました。ONにしました。

次に、別のアクセス トークンを取得し、新しいトークンで試しました。つまり、エラーはなくなり、プロファイルの詳細を取得しました。それが本当にエラーの原因であるかどうかをクロスチェックするために、コンソールに戻って Google+ API を無効にしました。しかし、今、私はエラーが発生します:

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

そのため、開発者コンソールで Google+ API のオン/オフを切り替えたことが 100% 確実ではありませんが、これがオンになっていることを確認してください。また、電源を入れてから数分待ってから、毎回新しいトークンを取得してから試してください。

于 2014-08-13T12:47:58.553 に答える
13

この問題は、すでにログインしていて、何度もログインしようとすると発生します。同じエラーに直面したので、いくつかの実験を行いました 1) モバイルで Web サイトを開いたところ、すべて問題ありませんでした。2) 次に、別のラップトップで試し、別の gmail アカウントを使用してログインしたところ、再び正常に機能しました。3)最初のラップトップで「サインイン」ボタンをクリックして再度接続しましたが、同じエラーが発生したため、google.comを開いて完全にログアウトしてから再試行しましたが、今回はうまくいきました。だから、問題はログアウトせずにログインボタンを何度もクリックしていると思います。

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

乾杯 !!

于 2015-02-13T15:12:54.557 に答える
12

Google API

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

それがないと、次のようなエラーが発生します。

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

有効にするには:

1) https://console.developers.google.comを開く

2) プロジェクトを選択します (右上隅)

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

于 2015-06-26T10:00:49.563 に答える
11

apiKeyURLに を追加する必要があります。

$curl = curl_init( 'https://www.googleapis.com/urlshortener/v1/url?key=AIza3834-Key' );
于 2016-01-28T14:40:08.310 に答える
8

そのため、この問題に遭遇し、上記の 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を渡すサーバー側のコードにあるようです(これは必要ありません)。

PHPの実装がどのようになるかについての私の試みは次のとおりです。

$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);'
于 2015-09-04T19:57:59.527 に答える
5

そのアクセス トークンを https 経由で送信していることを願っています。代わりにコードを使用し、サーバー側でアクセストークンの交換を行うことを検討する価値があるかもしれません。セキュリティを向上させるために、https://developers.google.com/+/web にそのアプローチに関するドキュメントがあります: https://developers.google.com/+/web /signin/server-side-flow

表示されている問題に関しては、アクセス トークンが正しくないか、正しく通過していないようです。tokeninfo エンドポイントに対して受け取ったアクセス トークンを確認できますか: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= - 有効な情報が表示されます。コード内で特に目立つものはありませんが、トークンが破損している場合は、同様のエラーが発生する可能性があります。

于 2013-10-14T08:58:02.137 に答える
0

私はちょうど同じ問題を抱えていて、何が悪いのかを見つけました。

ライブラリから Google Plus API を有効にする場合、完全に有効にするための追加の手順があります。Google Plus API ライブラリ ページの [管理] ボタンをクリックし、2 つの質問の回答を入力して送信する必要があります。それで全部です!!

これで私の問題は解決しました。あなたの問題も解決されることを願っています。これは、「資格情報をプロジェクトに追加する」という「管理」ボタンをクリックした後に撮影されたページのスクリーンショットです。

Google Plus API ライブラリ プロジェクトに資格情報を追加する

于 2019-07-03T05:20:35.233 に答える