シンプルなSymfony2プロジェクトを作成しました。従業員はログインしてニュースやその他のものをチェックできます。次に、社員が働いているかどうかを示す外部システムを統合したいと考えました。他のシステムを制御することはできませんが、必要な情報を取得できるようにWeb API(REST)が用意されています。Symfony2の外部Web APIからのアクセスとリフレッシュトークンをどこに格納するのですか?
このpost (stackoverflow)の回答のために、私は必要な情報を得るためにPHP HTTPクライアントとしてGuzzleBundleを使用することに決めました。
だから私は、ログインウェブAPIによって必要とされている:
$client = new GuzzleHttp\Client();
$req = $client->request("POST", "https://httpbin.org/login", ['body' => ['user' => 'user', 'pw' => 'pw']]);
$response = json_decode($req->getBody()->getContents());
そして、私は$レスポンスから提供されたアクセストークンを使用:このように必要な情報を取得するには
{
"success": true,
"content": [
{
"accessToken": "x",
"accessTokenExpires": "date",
"refreshToken": "z",
"refreshTokenExpires": "date"
}]
}
を:
$reqPara = ['body' =>["accessToken" => $at, "department" => $department, "location" =>$location]];
$req = $client->request("POST", "https://httpbin.org/employees/atwork", $reqPara);
$response = json_decode($req->getBody()->getContents());
私が望むものを得ました:
{
"success": true,
"content": [
{
"employee": "a",
"status": "at work",
},
{
"employee": "b",
"status": "not at work",
}
]
}
もちろん、従業員が働いているかどうかを知りたいときはいつでもログインすることができますが、アクセストークンを使用することができればそれは無駄に思えます。しかし、再びアクセストークンが期限切れになると、新しいトークンを生成するためにリフレッシュトークンが必要ですが、これらのトークンをどこに保存して後で再利用するのですか?データベースや設定ファイルで?これは標準的な存在ですか?
ありがとうB.私はこのオプションのconfigsをparameters.ymlで知っていますが、ユーザー名とパスワードを保存すると、GuzzleBundleキャッシュトークンを意味するのでしょうか?それは私には分かりません。私はここで間違っているかもしれませんが、それらのトークンを使用することは "正しい"ようです。迅速なgoogle検索は、トークンを使用する際の安全性が高いことを示しています。 – iknownothing