Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: LightOpenID ja Steam-tili

Johuusi [12.05.2020 00:12:44]

#

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)

Metabolix [12.05.2020 13:47:05]

#

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?

Johuusi [12.05.2020 21:56:36]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta