Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Pozyskanie danych użytkownika bez potrzeby logowania - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: Pozyskanie danych użytkownika bez potrzeby logowania (/thread-pozyskanie-danych-uzytkownika-bez-potrzeby-logowania)



Pozyskanie danych użytkownika bez potrzeby logowania - tndek - 03-11-2012

Witam.

Chciałem stworzyć aplikację na Facebooka. Po wejściu w nią ma się pojawić komunikat z przyciskiem 'przejdź do aplikacji'. W kolejnym użytkownik zezwoli na dodatkowe uprawnienia. Potwierdzenie warunków ma przekierować go na adres zewnętrzny (np. www.page.pl), jednak w tym momencie miałbym już uzyskać dane użytkownika niezbędne do publikacji informacji na jego ścianie.
Znalazłem w sieci dwa skrypty - jeden odpowiedzialny za pobranie access tokena i ID użytkownika(config.php), drugi do publikacji wiadomości na jego wall'u. (publish).

Kod config.php:
Kod:
<?
require '/facebook.php';

$facebook = new Facebook(array(
  'appId' => 'TOP_SECRET',
  'secret' => 'MORE_THAN_TOP_SECRET',
  'cookie' => true,
));

$uid = $facebook->getUser();
    $me = null;
    if ($uid) {
    try {

    $me = $facebook->api('/me');
    $token = $facebook->getAccessToken();
    } catch (FacebookApiException $e) {
    error_log($e);
    }
    }


    // pobieranie listy stron administrowanych przez użytkownika
    if($me)
    {
    echo "moj token to : " . $token . "<br />";
    $accounts = $facebook->api('/me/accounts');
    foreach($accounts['data'] as $account)
    echo($account['id']." - ".$account['name']." - ".$account['access_token']."<br />");
    ?>
    <a href="https://graph.facebook.com/me/accounts&access_token=<?php echo $token; ?>">Lista stron</a><br />
    <?php
    }
    ?>
  <a href="<?php echo($facebook->getLoginUrl(array('scope' => 'email, manage_pages,publish_stream,offline_access'))); ?>">Login</a>

Kod publish.php:
Kod:
<?
require('/facebook.php');
$page_access_token = 'yyy';
$page_id = 'yyy';

$facebook = new Facebook(array(
  'appId'  => 'xxx',
  'secret' => 'xxx',
  'cookie' => true,
));

$params = array('message' => 'Zlot udany!',
        'access_token' => $page_access_token,
        'link' => 'http://page.pl/mind.php', );
                
$post = $facebook->api('/'.$page_id.'/feed', 'post', $params);

Teoretycznie schemat działania jest mniej więcej taki, jakiego oczekuje. Niestety, uruchomienie plików php odbywa się z poziomu paska adresu, wówczas pojawia się opcja logowania, bez której zdobycie tokena i ID jest niemożliwe, natomiast tejże opcji nie chcę używać, ponieważ cały proces dostępu usera do aplikacji ma się odbywać przez kolejne okna, jak opisałem wyżej.
Nie jestem specjalistą języka PHP, dlatego w swoich działaniach kieruję się 'po omacku'. Prosiłbym o pomoc w nakierowaniu mnie na dobrą stronę. Smile

Pozdrawiam.