Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Facebook PHP SDK

[es] :: PHP :: Facebook PHP SDK

[ Pregleda: 1692 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Facebook PHP SDK15.07.2011. u 05:51 - pre 155 meseci
Pozdrav,

Da li se iko bavi pravljenjem Facebook aplikacija, i da li koristi PHP SDK koji Facebook nudi svojim korisnicima? Na internetu se nalazi veoma malo primera, a FB ne nudi nikakvu posebnu dokumentaciju. Vidim da se dosta ljudi odlucuje za JS SDK, kojem je FB, cini mi se, posvetio dosta vise paznje.

Ono sto me konkretno zanima je, kako korisnika pitati da se uloguje u odredjenu aplikaciju? Ranije sam to uspesno izvodio, ali vec 7-8 meseci nisam pravio nijednu aplikaciju, a bekape nemam. Stari kod (koji mislim da sam koristio) vise ne radi, tj koriscenje $facebook->require_login() funkcije. Ona izgleda vise ne postoji. FB u svojim primerima nudi getUser funkciju, ali uz pomoc nje ne mogu da se ulogujem u aplikaciju.

Pozdrav, i hvala.
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Facebook PHP SDK15.07.2011. u 23:53 - pre 155 meseci
Code:
$facebook = new Facebook(array(
  'appId'  => 'TVOJ APP ID',
  'secret' => 'TVOJ SECRET',
  'cookie' => true,
));
$session = $facebook->getSession();
$accessToken = $facebook->getAccessToken();
$me = null;

if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}
if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
    $loginUrl = $facebook->getLoginUrl();
);
}


Prijava/Odjava
Code:
if (!$me) { ?>
<a href="<?php echo $loginUrl; ?>">Prijavi se sa FB nalogom</a>
<?php } else { ?>
<a href="<?php echo $logoutUrl ; ?>">Odjavi se</a>
<?php } ?>

I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Facebook PHP SDK16.07.2011. u 05:40 - pre 155 meseci
Hvala na odgovoru,

To je preko sesija. Da li je sad samo tako moguce to izvesti? Ranije je bilo samo jednom da se uloguje u aplikaciju i to je bilo dovoljno. Da li je moguce i dalje tako raditi? Ne znam za vas, ali meni se uopste ne svidjaju te novine u SDK-u.

Ono sto mi trenutno najvise odgovara je ovo, sto sam uspeo da pronadjem na internetu:

Code:


<?php

// This should point to wherever you have your php facebook api.
require_once ("../pbtest/facebook-php-sdk-ab2d46d/src/facebook.php");
// id of any associated fan page.
// URL of the above
// Application ID
$cappid = "xxxxxxx";
// Application Secret
$cappsecret = "dab1xxxxxxxxxxxxxxxxxxad0";
$facebook = new Facebook(array(
'appId' => $cappid,
'secret' => $cappsecret,
'cookie' => true,
'domain' => 'xxxxxx'
));

$user = $facebook->getUser();

if (!$user) {
    $url = $facebook->getLoginUrl(array('scope'=> 'publish_stream,status_update','redirect_uri'=>'http://apps.facebook.com/testiranjejedan/'));
    echo "<p>Redirecting to permission request...</p>";
    echo "<script type=\"text/javascript\">top.location.href = '$url';</script>";
} else {

    try {
        $likes = $facebook->api('me/likes');
        $fa_fbme = $facebook->api('me');
        $fa_fbname = $fa_fbme['name'];
        $fa_fbid = $fa_fbme['id'];
        $fa_fanpageliked = false;
        $fa_appliked = false;

        foreach ($likes['data'] as $ilike) {
            if ($ilike['id'] == $cfanpageid) {$fa_fanpageliked = true;}
            if ($ilike['id'] == $cappid) {$fa_appliked = true; }
        }

require_once('app.php');


    }
    catch (FacebookApiException $e) {
        $url = $facebook->getLoginUrl(array('scope'=> 'publish_stream,status_update','redirect_uri'=>'http://apps.facebook.com/testiranjejedan/'));
        echo "Please wait for authorization.";
        echo "<script type=\"text/javascript\">top.location.href = '$url';</script>";
    }

}


Kod je skoro isti, jedino sto nije potrebno kliknuti na link da bi se ulogovalo :)

app.php je kod koji se izvrsava kada kada ste ulogovani u aplikaciju. Trenutno je to ono sto mi najvise odgovara, nadam se da ce ovo jos nekome pomoci.

Ono sto je drugacije od starog SDK-a, je to sto vise ne izlazi na wallu "Blabla Blablabla je poceo da koristi aplikaciju tu i tu". Ne znam da li su to skroz sklonili, ili je potrebno jos nesto ubaciti kako bi to funkcionisalo. To mi je vrlo bitno, jer je to jedan od najlaksih i najcistijih nacina za sirenje aplikacije.

[Ovu poruku je menjao Zlatni_bg dana 16.07.2011. u 06:50 GMT+1]
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Facebook PHP SDK16.07.2011. u 23:11 - pre 155 meseci
Generalno ti se loguješ na FB, a ne na aplikaciju. Aplikacija je samo "template" za login ili šta već.
Korisnik je automatski prijavljen ukoliko je dopustio aplikaciji da uzima njegove podatke s tim što može definisati dodatne parametre (npr. email) kod $facebook->getLoginUrl( array('req_perms' => 'email') );
Dakle ako je korisnik "odobrio" tvoju aplikaciju ranije sa pomenutim parametrima automatski je prijavljen (ukoliko je prijavljen na facebook-u).

Možeš probati da dodaš i javascript posle koda:
Code:
<div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId   : '<?php echo $facebook->getAppId(); ?>',
          session : <?php echo json_encode($session); ?>, // don't refetch the session when PHP already has it
          status  : true, // check login status
          cookie  : true, // enable cookies to allow the server to access the session
          xfbml   : true // parse XFBML
        });

        // whenever the user logs in, we refresh the page
        FB.Event.subscribe('auth.login', function() {
          window.location.reload();
        });
      };

      (function() {
        var e = document.createElement('script');
        e.src = document.location.protocol + '//connect.facebook.net/sr_RS/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>

<?php if ($me) {
//Korisnik je već prijavljen...radi šta hoćeš sa podacima. Npr.
 while (list($key, $value) = each($me)) {
      //echo "<span><b>$key:</b> $value</span><br />\n";
      if ($key=="name")  
      {echo "Korisničko ime: $value<br />"; $name = $value;}
      
      if ($key=="email") 
      {echo "Email: $value - ".md5($value)."<br />"; $email = $value;}
      
      if ($key=="birthday") 
      {echo "Datum rodjenja: $value <br />"; $birth = date("d- m-Y", strtotime($value)); echo "$birth<br />";}
      }
}

Znači ako je korisnik ulogovan na FB i poseti tvoju stranicu nije potrebno da klikne na login dugme. Već je ulogovan i ima pristup tvojoj aplikaciji. Imaj na umu da je FB API bagovit i da ti možda ovaj kod neće raditi za par meseci, dana...Za sada ne vidim praktičniji i jednostavniji način.
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4420
*.dynamic.sbb.rs.



+498 Profil

icon Re: Facebook PHP SDK17.07.2011. u 08:52 - pre 155 meseci
Hvala na odgovoru.

Inace, ipak i izlazi na wall-u informacija da je korisnik poceo da koristi aplikaciju. Hvala ti na svemu, u sklopu tvog odgovora i onoga sto sam pronasao na internetu, i okacio ovde, nasla se savrsena kombinacija :)
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

[es] :: PHP :: Facebook PHP SDK

[ Pregleda: 1692 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.