1

PHP 用に独自の Google Plus ライブラリを作成しましたが、これまでのところ、アクセス トークンの expire_time を延長できないという 1 つの問題で正常に動作します。ユーザーが更新するために再度ログインすることを期待できないさらなる処理にそれを使用する必要があります。

私がやりたいことは、G+ ページのフォロー数を取得することです。これを言うのは、それを取得する別の方法があれば、API は必要ないからです。

そうでない場合は、これまでに得たものを見てください。

これは私のログイン URL ジェネレーターです。

    public function generateLoginUrl()
    {
        $arr = array(
            "scope" => "https://www.googleapis.com/auth/plus.".implode(".", Config::$scopes)."",
            "state" => "generate_a_unique_state_value",
            "redirect_uri" => Config::$redirect_uri,
            "response_type" => "code",
            "client_id" => Config::$client_id,
            "access_type" => "offline"
        );

        $oauth_url  = "https://accounts.google.com/o/oauth2/auth?".http_build_query($arr);

        return $oauth_url;
    }

アクセストークンジェネレーターは次のとおりです。

    public function getAccessToken()
    {
        $post = array(
            "code" => $_SESSION["code"],
            "grant_type" => "authorization_code",
            "redirect_uri" => Config::$redirect_uri,
            "client_id" => Config::$client_id,
            "client_secret" => Config::$client_secret
        );

        $result = $this->createRequest("https://accounts.google.com/o/oauth2/token", $post);
        $result = json_decode($result);

        $_SESSION["instagram_token"] = $result->access_token;
        unset($_SESSION["code"]);
    }

getAccessToken から得たものは、次のような例です。

object(stdClass)[2]
  public 'access_token' => string 'ya29.VAHbw-eZNhhrvJC8JLGuTwAuRyBfqEf9lA_lPC5gcBMvYINsz9nUJyw5-nEqHyA' (length=83)
  public 'token_type' => string 'Bearer' (length=6)
  public 'expires_in' => int 3599
  public 'id_token' => string 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjBlMDYzZGUwYzlmNjY4NmRlYjY2ZTc0NTRiMzIwMWMxMTE0ZWJhNmUifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTA0OTE3NDIxMDA2NTYyNjIxODA5IiwiYXpwIjoiNzc2OTUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXVkIjoiNzc2OTU1MjgyODA3LXZvOWk4b2U5NXUyYzY5MW9scnFoaG51N3I5bjE3NjRjLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiaWF0IjoxN'... (length=719)

上記のように、取得した access_token は 1 時間で期限切れになりますが、定期的にページ フォロワー数または「丸で囲まれた」数をチェックする必要があるため、無限アクセス トークンまたは拡張アクセス トークンが必要です。

4

1 に答える 1

5

expires_in が 1 時間を超えることはありません。必要なことは、access_type =offlineでオフライン アクセスを要求し、access_token の有効期限が切れたときに refresh_token を使用して新しい access_token を要求することです。

ユーザーまたはあなたがクライアントのアクセス権を取り消さない限り、更新トークンは有効です。

于 2015-04-13T19:12:14.560 に答える