Tarvitsen ammattilaisen auttavaa kättä PHP kanssa. Eli teen siis steam loginia lightopenid:een avulla. Mutta ongelma on se, että koodin pitäisi tehdä cache kansioon jokaisesta kirjautujasta .json file jossa esim, avatarfull yms mutta eipä tee, joten aina tulee erroria että ei löydy avatarfullia.... yms. Se avatarfull on siis se steamin profiilikuva jota voi sitten käyttää phpssa. Kaikki apu on tervetullutta. :) - Huom olen aloittelija
Itse koodi tässä:
<?php include "apikey.php"; // include "OpenId.php"; // $OpenID = new LightOpenID("localhost"); $api = "Mun api"; // Mun api avain session_start(); if(!$OpenID->mode){ if(isset($_GET['login'])){ $OpenID->identity = "http://steamcommunity.com/openid"; header("Location: {$OpenID->authUrl()}"); } if(!isset($_SESSION['T2SteamAuth'])){ echo "<a href=\"?login\"><img src=\"http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png\" border=\"0\"/></a>"; } } 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']); if($_SESSION['T2SteamAuth'] !== null){ $Steam64 = str_replace("http://steamcommunity.com/openid/id/", "", $_SESSION['T2SteamAuth']); $profile = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={$api}&steamids={$Steam64}"); $buffer = fopen("cache/{$Steam64}.json", "w+"); file_put_contents("cache/{$Steam64}.json", $profile); fclose($buffer); } header("Location: index.php"); } } if(isset($_SESSION['T2SteamAuth'])){ echo "<div id=\"login\"><a href=\"?logout\">Logout</a></div>"; $steam = json_decode(file_get_contents("cache/{$_SESSION['T2SteamID64']}.json")); echo "<img src=\"{$steam->response->players[0]->avatarfull}\"/>"; } if(isset($_GET['logout'])){ unset($_SESSION['T2SteamAuth']); unset($_SESSION['T2SteamID64']); header("Location: index.php"); } include "apikey.php"; // My api key include "OpenId.php"; //Official light open id lib. $OpenID = new LightOpenID("http://4pstore.com/"); $api = B5F1409CA6FFE70A2CFB98C870A6A9F5; session_start(); if(!$OpenID->mode){ if(isset($_GET['login'])){ $OpenID->identity = "http://steamcommunity.com/openid"; header("Location: {$OpenID->authUrl()}"); } if(!isset($_SESSION['T2SteamAuth'])){ echo "<a href=\"?login\"><img src=\"http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png\" border=\"0\"/></a>"; } } 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']); if($_SESSION['T2SteamAuth'] !== null){ $Steam64 = str_replace("http://steamcommunity.com/openid/id/", "", $_SESSION['T2SteamAuth']); $profile = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={$api}&steamids={$Steam64}"); $buffer = fopen("cache/{$Steam64}.json", "w+"); file_put_contents("cache/{$Steam64}.json", $profile); fclose($buffer); } header("Location: index.php"); } } if(isset($_SESSION['T2SteamAuth'])){ echo "<div id=\"login\"><a href=\"?logout\">Logout</a></div>"; $steam = json_decode(file_get_contents("cache/{$_SESSION['T2SteamID64']}.json")); echo "<img src=\"{$steam->response->players[0]->avatarfull}\"/>"; } if(isset($_GET['logout'])){ unset($_SESSION['T2SteamAuth']); unset($_SESSION['T2SteamID64']); header("Location: index.php"); } ?> (PHP)
Oletko yrittänyt itse selvittää ongelmaa jotenkin? Mihin asti koodissa päästään? Tuleeko jokin virheilmoitus? (Oletko edes laittanut virheilmoitukset näkyviin?)
Varsinaisena virheenä skriptissä näkyy se, että file_put_contents-kutsun ympärillä on täysin turhaan fopen ja fclose, mutta tämä ei sinänsä vaikuta kuvaamasi ongelmaan.
Toinen selvä vika on siinä, että tuossa on lähes sama koodi kaksi kertaa peräkkäin seuraavilla eroilla (joista jälkimmäinen on väärin, koska avaimesta puuttuvat lainausmerkit):
// Alku: $OpenID = new LightOpenID("localhost"); $api = "Mun api"; // Mun api avain // Keskikohta: $OpenID = new LightOpenID("http://4pstore.com/"); $api = B5F1409CA6FFE70A2CFB98C870A6A9F5;
Kuuluuko parametrissa olla http:// mukana?
Onko cache olemassa ja onko skriptillä siihen kirjoitusoikeus?
Metabolix kirjoitti:
(12.05.2020 13:47:05): Oletko yrittänyt itse selvittää ongelmaa...
Joo oon pistänyt virheilmoitukset päälle ja olen koittanut pätkä pätkältä selvittää ongelmaa, mutta en ole tajunnu :) Kiitti kuiteski ku jaksoit käyttää aikaas tähän.
Aihe on jo aika vanha, joten et voi enää vastata siihen.