Google API Static链接到用户个人资料图片

时间:2014-04-23 07:21:35

标签: php google-api google-plus

用户已登录我的网站,我拥有检索其帐户信息所需的所有详细信息。我知道如何检索用户个人资料图片网址,但我不确定这是否是“静态”链接。如果它不是一个静态链接,我每次都需要获取URL,这看起来像一个坏主意。我真的会用我的所有要求锤击谷歌。 (我不担心谷歌服务器,我更担心我的api配额。)

有没有办法获得用户个人资料图片的静态链接。如果没有,最好的选择是什么?

2 个答案:

答案 0 :(得分:1)

https://developers.google.com/+/policies州的开发者政策,在B1c部分:

  

不要使用陈旧数据。您可以缓存或存储通过Google+ API获取的数据,但在应用程序上下文中尽可能合理地使用,最近使用从API获取的新数据。如果新数据显示内容已消失(例如,因为用户将其删除),请将其删除,不要使用陈旧副本。为清楚起见,如果您符合这些要求,则可能会将数据缓存的时间超过缓存标头指定的时间。

指南显而易见,但确实说你不应该每次都重新获取个人资料信息/照片......但是你应该定期重新获取它并存储它,至少在会话。

由于您正在谈论照片,因此请考虑人们可能会经常更换照片。我想说在用户会话期间缓存图像是有意义的,但是当他们登录新会话时刷新它可能是合理的。

答案 1 :(得分:0)

我正在使用它来获取用户信息(和图像信息,并将其保存到db以供以后使用)

$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;
}