Php 谷歌API用户档案图片的静态链接
一个用户登录到我的网站,我拥有检索他们帐户信息所需的所有详细信息。我知道如何检索用户配置文件图像url,但我不确定这是否是“静态”链接。如果它不是一个静态链接,我每次都必须获取URL,这是一个坏主意。我真的会用我所有的请求来敲打谷歌。(我不担心谷歌的服务器,我更担心我的api配额。)Php 谷歌API用户档案图片的静态链接,php,google-api,google-plus,Php,Google Api,Google Plus,一个用户登录到我的网站,我拥有检索他们帐户信息所需的所有详细信息。我知道如何检索用户配置文件图像url,但我不确定这是否是“静态”链接。如果它不是一个静态链接,我每次都必须获取URL,这是一个坏主意。我真的会用我所有的请求来敲打谷歌。(我不担心谷歌的服务器,我更担心我的api配额。) 那么,有没有一种方法可以获得到用户配置文件图像的静态链接呢。如果没有,最好的选择是什么?我用它来获取用户信息(和图像信息,并将其保存到数据库供以后使用) 州政府的开发商政策,见第B1c节: 不要使用过时的数据。您可
那么,有没有一种方法可以获得到用户配置文件图像的静态链接呢。如果没有,最好的选择是什么?我用它来获取用户信息(和图像信息,并将其保存到数据库供以后使用) 州政府的开发商政策,见第B1c节: 不要使用过时的数据。您可以缓存或存储通过Google+API获得的数据,但在应用程序上下文中尽可能使用最近从API获取的新数据。如果新数据显示内容消失了(例如,因为用户删除了它),请删除它,不要使用过时的副本。为清楚起见,如果您符合这些要求,则可以缓存比缓存标头指定的时间更长的数据 这个指导原则很模糊,很明显,但它确实说你不需要每次都重新获取个人资料信息/照片。。。但您应该定期重新获取并存储它,至少在会话期间是这样 既然你在说照片,想想人们可能会频繁地改变他们的照片。我认为在用户会话期间缓存映像是有意义的,但在用户登录新会话时刷新映像可能是合理的
$google_client_id = "MY GOOGLE CLIENT ID";
$google_client_secret = "MY GOOGLE CLIENT SECRET";
$redirect_URL = "http://url.to.redirect";
$gClient = new Google_Client ();
$gClient->setApprovalPrompt ("auto");
$gClient->setApplicationName ("My Application Name");
$gClient->setClientId ($google_client_id);
$gClient->setClientSecret ($google_client_secret);
$gClient->setRedirectUri ($redirect_URL);
$google_oauthV2 = new Google_Oauth2Service ($gClient);
//If user wish to log out, we just unset Session variable
if (isset ($_REQUEST["reset"]))
{
unset ($_SESSION["google"]["token"]);
$gClient->revokeToken ();
header ("Location: ".filter_var ($redirect_URL, FILTER_SANITIZE_URL));
}
if (isset ($_GET["code"]))
{
$gClient->authenticate ($_GET["code"]);
$_SESSION["google"]["token"] = $gClient->getAccessToken ();
header ("Location: ".filter_var ($redirect_URL, FILTER_SANITIZE_URL));
return;
}
if (isset ($_SESSION["google"]["token"]))
{
$gClient->setAccessToken ($_SESSION["google"]["token"]);
}
if ($gClient->getAccessToken ())
{
//Get user details if user is logged in
$google_data = $google_oauthV2->userinfo->get ();
$google_user = array (
"id" => $google_data["id"],
"email" => filter_var ($google_data["email"], FILTER_SANITIZE_EMAIL),
"profil_url" => filter_var ($google_data["link"], FILTER_VALIDATE_URL),
"picture" => filter_var ($google_data["picture"], FILTER_VALIDATE_URL)."?sz=200"
);
$_SESSION["google"]["token"] = $gClient->getAccessToken ();
// we have users data now so we do with it what we want... save to db?
}
else
{
//get google login url and redirect user to it
$login_url = $gClient->createAuthUrl ();
header ("Location: $login_url");
exit;
}