继续获得“超出未经验证的使用的每日限制”。持续使用需要注册“尝试谷歌加上我的网络应用程序登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继续获得“超出未经验证的使用的每日限制”。持续使用需要注册“尝试谷歌加上我的网络应用程序登录相关的知识,希望对你有一定的参考价值。
我正在尝试在我的网络应用上实施Google plus注册,然后我按照谷歌文档设置注册但是当我在接受权限后尝试注册并使用访问令牌返回给我任何api restcall我返回超出未经身份验证的使用的每日限制。继续使用需要注册错误。我已经使用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);
}
我也遇到了同样的错误 - “超出未经验证的使用的每日限制。继续使用需要注册”。
我在API下检查了我的谷歌开发者控制台,用于与API密钥/身份验证密钥相关联的项目,例如https://console.developers.google.com/project/<your app id>/apiui/api
。 Google + API的状态设置为OFF。我把它打开了。
然后我获得了另一个访问令牌,然后尝试使用新的令牌。它工作,即错误消失了,我得到了配置文件的详细信息。要反复核对这是否确实是导致错误的原因,我又回到了控制台并停用了Google+ API。但现在,我得到错误:
“未配置访问权限。请使用Google Developers Console激活项目的API。”
因此,我并非100%确定这是在我的开发者控制台中启用/关闭Google+ API,但请确保已启用此功能。此外,请在开机后等待几分钟,并确保每次尝试前都获得一个新的令牌。
就我而言,这是因为我使用的是旧的访问令牌。您必须记住,访问令牌的生命周期很短,因此您必须使用刷新令牌生成新的访问令牌。示例(使用php类):
// 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());
}
我试图使用access_token
获取返回用户的名字和图片,因为他们已经在之前的会话中登录。在遇到"unauthenticated use"
错误消息后,这是最终通过PHP中的cURL工作的内容。
//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'];
请注意,https://www.googleapis.com/plus/v1/people/me
(通过access_token
返回用户)和https://www.googleapis.com/oauth2/v4/token
(通过code
初始登录)返回不同字段/结构中的用户名和图片。
我在javascript方面遇到了问题(客户端)。在我的情况下,有必要将API_KEY
添加到gapi.client.init()
完整我的功能:
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
和CLIENT_ID
可以从here(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”,如果尚未启用,则启用它。
当您已登录并仍尝试一次又一次登录时,会发生此问题。我遇到了同样的错误所以做了一些实验1)我在手机上打开网站,一切都很好。 2)然后我尝试了另一台笔记本电脑,并使用不同的Gmail帐户登录,它再次工作正常。 3)在我的第一台笔记本电脑上我通过点击“登录”按钮再次绑定我得到了相同的错误,所以我打开google.com然后完全注销然后再次尝试,这次它工作。所以我相信,问题是一次又一次地点击登录按钮而不注销。
我不确定这是否真的是一个问题,但至少这是我发现的。我仍在尝试,尝试和尝试,如果我找到了其他任何东西,我会发布。
干杯!!
所以我遇到了这个问题,上面两个方法/解决方案(启用API访问和退出帐户)对我来说不起作用,因为对于google + signin,你必须在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);'
您必须使用URL添加apiKey
:
$curl = curl_init( 'https://www.googleapis.com/urlshortener/v1/url?key=AIza3834-Key' );
希望你通过https发送访问令牌!可能值得考虑使用代码代替并在服务器端进行交换以获取访问令牌,以提高安全性,如果没有别的,这里有一些关于该方法的文档:https://developers.google.com/+/web/signin/server-side-flow
关于你所看到的问题,似乎访问令牌是坏的,或者没有正确地通过它。您是否可以检查您在tokeninfo端点上收到的访问令牌:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= - 应显示有效信息。在代码中没有任何突出显示,但如果令牌被破坏,您可能会看到类似的错误。
我遇到了同样的问题,解决方法是:设置APIKEY
我也很绝望,最后我设法找到了解决方案。唯一的问题是添加链接到您的应用程序的正确api令牌,在我的情况下是浏览器令牌,这一切都有效。
示例:我希望将所有事件与我的日历相关联
https://www.googleapis.com/calendar/v3/calendars/ {CALENDAR_ID} /事件?&关键= {} API_KEY
也许我会帮助那些遇到同样问题的人。
祝好运
在我的情况下,它发生在一天中的特定时间,花了几个小时后终于发现我的每日配额限制(每100秒查询数)因为大量请求而被超过。所以它抛出了错误。我已经联系谷歌支持以增加它们。
以上是关于继续获得“超出未经验证的使用的每日限制”。持续使用需要注册“尝试谷歌加上我的网络应用程序登录的主要内容,如果未能解决你的问题,请参考以下文章