Při authentikaci nefunguje cashování do souboru
- t0x1c
- Člen | 151
Zdravím mám takový problem. Mám přihlášeni přes službu steam pomoci openid. Authenticator jsem si upravil tak aby to nějak šlo. Ale když se člověk přihlásí potřebuju načtení podle jeho id informaci z jednoho api a to je pomalé. Proto to chci udělat jen jednou když se přihlásí a udělat chache do souboru. Ale prostě za boha to nechce jit. Když to dám napč do nějakeho presenteru na action default tak to jde ale v tom authenticatoru to nejde. Zde je kod
public function authenticate(array $credentials) {
$storage = new Nette\Caching\Storages\FileStorage(WWW_DIR . '/../temp');
$this->cache = new Cache($storage);
list($steamId64) = $credentials;
return new Nette\Security\Identity($steamId64, '', array('steamid64' => $steamId64));
$this->profil = json_decode(file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=B554331187B4FDB8E9BE6428A686F321&steamids=' . $steamId64));
$this->cache->save($steamId64, $this->profil);
}
- t0x1c
- Člen | 151
ViPErCZ napsal(a):
??? Za klíčové slovo return se to nikdy nedostane!!!
Sorry to jsem zrovna koušel samozřejmě to nejde ani před return.
A do identity jsem nezkoušel. Můžu tam oložit přímo celou stdClass? To api vrací toto http://api.steampowered.com/…aries/v0002/?…
Editoval t0x1c (29. 9. 2013 11:30)
- t0x1c
- Člen | 151
Tak jsem dal teda toto
public function authenticate(array $credentials) {
list($steamId64) = $credentials;
$profil = json_decode(file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=B554331187B4FDB8E9BE6428A686F321&steamids=' . $steamId64));
return new Nette\Security\Identity($steamId64, '', array('steamid64' => $steamId64, 'steamprofil' => $profil));
}
A ukláda se NULL. Jakoby vubec nefungovalo v tom authenticatoru file_get_contents
- t0x1c
- Člen | 151
Fakt si s tim nevím rady přiložím vše.
Toto mam v basepresenteru je to to openid prihlášení
public function actionDefault() {
//Přihlášení přes steam pomoci OPENID
$api = '-------';
try {
# Change 'localhost' to your domain name.
$OpenID = new LightOpenID('----');
if (!$OpenID->mode) {
if (isset($_GET['login'])) {
$OpenID->identity = "http://steamcommunity.com/openid";
header("Location: {$OpenID->authUrl()}");
}
if (!isset($_SESSION['T2SteamAuth'])) {
$this->login = "<div id=\"login\">Welcome Guest. Please <a href=\"?login\"><img src=\"http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png\" /></a> to *Website Action*.</div>";
}
} elseif ($OpenID->mode == "cancel") {
echo "User has canceled Authenticiation.";
} else {
if (!isset($_SESSION['T2SteamAuth'])) {
$_SESSION['T2SteamAuth'] = $OpenID->validate() ? $OpenID->identity : null;
$_SESSION['T2SteamID64'] = str_replace("http://steamcommunity.com/openid/id/", "", $_SESSION['T2SteamAuth']);
$this->steam64 = $_SESSION['T2SteamID64'];
//Zde mi ten json_decode taky nešel
//Přihlášení
$this->user->login($this->steam64);
$this->user->setExpiration(FALSE);
$this->redirect('this');
}
}
} catch (ErrorException $e) {
echo $e->getMessage();
}
A v authenticaotur potom jen toto
public function authenticate(array $credentials) {
list($steamId64) = $credentials;
$profil = json_decode(file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=B554331187B4FDB8E9BE6428A686F321&steamids=76561197987636337'));
return new Nette\Security\Identity($steamId64, '', array('steamid64' => $steamId64, 'steamprofil' => $profil));
}
- enumag
- Člen | 2118
t0×1c napsal(a):
To nevím …
A to je tak těžký si tam hodit dump??? Že sem dáš kompletní zdroják ničemu nepomůže, prostě nastal nějaký speciální případ že se ten JSON ze steamu nepodařilo načíst a ty to nemáš ošetřené, toť vše. Tohle si musíš vyřešit sám. A nic složitýho to není. Za čas který mi trvá napsat tenhle příspěvek bych to měl pravděpodobně už vyřešené.
Editoval enumag (29. 9. 2013 16:43)