DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 15. 12. 2011.   #1
Peca
Super Moderator
Knowledge base
 
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
Peca će postati "faca" uskoroPeca će postati "faca" uskoroPeca će postati "faca" uskoro
Default Facebook Connect dugme: nova OAuth 2.0 metoda,pošto stara implementacija više ne radi

FB je presao na OAuth 2.0, i facebook connect dugme vam vise nece raditi dok ne 'upgrade-ujete' svoj kod.
polomih glavu dok ga naterah da radi, i da dostavlja podatak 'email'.
ako nekom treba pomoc - neka javi, postavicu primer koji radi.
__________________
Vesti | MyCity | Igrice | Zaštita od virusa
Peca je offline   Odgovorite uz citat
Staro 15. 12. 2011.   #2
kickloop
Mister
Master
 
Avatar kickloop
 
Datum učlanjenja: 25.11.2007
Poruke: 626
Hvala: 114
641 "Hvala" u 96 poruka
kickloop će postati "faca" uskorokickloop će postati "faca" uskorokickloop će postati "faca" uskorokickloop će postati "faca" uskorokickloop će postati "faca" uskorokickloop će postati "faca" uskoro
Pošaljite poruku preko Skype™ za kickloop
Default

Dakle nemam reči. Polomih se nedavno da sve namestim i evo sad open nešto menjaju. Peco ako te ne mrzi daj taj quick fix da ne lomim glavu i ja opet.
__________________
When you assume, you make an ass out of u and me
kickloop je offline   Odgovorite uz citat
Staro 16. 12. 2011.   #3
Peca
Super Moderator
Knowledge base
 
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
Peca će postati "faca" uskoroPeca će postati "faca" uskoroPeca će postati "faca" uskoro
Default

daleko od toga da je 'quick'
mnogo su ga sad zapetljali.

postavicu sutra u toku dana php code koji radi, pa vi gledajte sta je sve menjano pa primenite to kod vas.

sad pravi dva puta http request, bog zna zasto su ga toliko ukomplikovali.....
ceo ovaj dan sam bukvalno bacio lomeci glavu kako da ga napravim da radi.
__________________
Vesti | MyCity | Igrice | Zaštita od virusa

Poslednja izmena od Peca : 16. 12. 2011. u 03:39.
Peca je offline   Odgovorite uz citat
"Hvala" Peca za poruku:
Staro 16. 12. 2011.   #4
Peca
Super Moderator
Knowledge base
 
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
Peca će postati "faca" uskoroPeca će postati "faca" uskoroPeca će postati "faca" uskoro
Default

PHP kôd:
<?php

define
('FACEBOOK_APP_ID'287905657898246);
define('FACEBOOK_APP_SECRET''000000000000000000000000000000000'); // <--- uneti App Secret kod

// ------------------- pocetak funkcija ----------------------

function parse_signed_request($signed_request$secret) {
  list(
$encoded_sig$payload) = explode('.'$signed_request2); 

  
// decode the data
  
$sig base64_url_decode($encoded_sig);
  
$data json_decode(base64_url_decode($payload), true);

  if (
strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    
error_log('Unknown algorithm. Expected HMAC-SHA256');
    return 
null;
  }

  
// check sig
  
$expected_sig hash_hmac('sha256'$payload$secret$raw true);
  if (
$sig !== $expected_sig) {
    
error_log('Bad Signed JSON signature!');
    return 
null;
  }

  return 
$data;
}

function 
base64_url_decode($input) {
  return 
base64_decode(strtr($input'-_''+/'));
}

function 
get_facebook_cookie($app_id$app_secret) {
  
$signed_request parse_signed_request($_COOKIE['fbsr_' $app_id], $app_secret);
    
// $signed_request should now have most of the old elements
    
$signed_request[uid] = $signed_request[user_id]; // for compatibility 
    
if (!is_null($signed_request)) return $signed_request['code'];
    else return 
FALSE;  
}

function 
check_facebook_cookie()
{
    if (isset(
$_COOKIE['fbsr_' FACEBOOK_APP_ID])) return TRUE;
    return 
FALSE;
}

function 
get_access_token($app_id$app_secret$cookie)
{
    
$access_token_response = @file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=".$app_id."&redirect_uri=&client_secret=".$app_secret."&code=".$cookie);
    if (
$access_token_response)
    {
        
parse_str($access_token_response);
        
$signed_request['access_token'] = $access_token;
        
$signed_request['expires'] = time() + $expires;
        return 
$signed_request['access_token'];
    } else return 
FALSE;
}

function 
get_facebook_user($access_token)
{
    
$file=@file_get_contents('https://graph.facebook.com/me?access_token=' $access_token);
    if (
$file)
    {
        
$user json_decode($file);
    } else return 
FALSE;
    if (isset(
$user->id)) return $user;
    else return 
FALSE;
}

function 
facebook_main_function()
{
    global 
$facebook_logged_in$facebook_user;

    
$facebook_logged_in=0;

    if (!
check_facebook_cookie()) return FALSE;    // ako uopste ne postroji fbsr_ cookie onda napustamo funkciju

    
$cookie get_facebook_cookie(FACEBOOK_APP_IDFACEBOOK_APP_SECRET);    // uzimamo vrednost fbsr_ cookie-a
    
if ($cookie)
    {
        
$access_token=get_access_token(FACEBOOK_APP_IDFACEBOOK_APP_SECRET$cookie);    // uzimamo neki retardirani token preko http-a
        
if ($access_token)
        {
            
$facebook_user=get_facebook_user($access_token);        // uzimamo podatke korisnika
            
if ($facebook_user)
            {
                
$facebook_logged_in=1;    
            }
            else 
setcookie('fbsr_' FACEBOOK_APP_ID''time()-4000);
        } else 
setcookie('fbsr_' FACEBOOK_APP_ID''time()-4000);
    }
}

// ------------------- kraj funkcija ----------------------

// odavde krece izvrsavanje skripte

facebook_main_function();    // ako postoji FB cookie - povezuje se na FB i uzima podatke korisnika


if ($facebook_logged_in)    // ako su uzeti podaci
{
    echo 
'Dobro dosao '$facebook_user->name."<br />\n";
    echo 
'Tvoj email je '$facebook_user->email."<br />\n";
    echo 
'<img src="http://graph.facebook.com/'.$facebook_user->id.'/picture" />';
    exit;
}

// ako nije setovan FB cookie [i ujedno nisu pokupljeni podaci] - onda prikazujemo HTML za FB Connect dugme

?>

<html>
<body>
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '<? echo FACEBOOK_APP_ID?>',
          status     : true, 
          cookie     : true,
          xfbml      : true,
          oauth      : true
        });
      };
      
      function fejs_login()
      {
          FB.login(function(response) {
           if (response.authResponse) {
             FB.api('/me', function(response) {
                 window.location.reload();
             });
           } else {
           }
         }, {scope: 'email'});
      }

 
      (function(d){
         var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         d.getElementsByTagName('head')[0].appendChild(js);
       }(document));
    </script>

    <a href="javascript:fejs_login()">Login with Facebook</a>
</body>
</html>
u liniji:
PHP kôd:
         }, {scope'email'}); 
se definise koje dodatne podatke uzimas, naveden primer sa 'email'.
__________________
Vesti | MyCity | Igrice | Zaštita od virusa

Poslednja izmena od Peca : 16. 12. 2011. u 13:37.
Peca je offline   Odgovorite uz citat
2 članova zahvaljuje Peca za poruku:
Staro 16. 12. 2011.   #5
centaur
Ivan Pavković
Qualified
 
Avatar centaur
 
Datum učlanjenja: 15.01.2007
Lokacija: Beograd
Poruke: 144
Hvala: 42
16 "Hvala" u 16 poruka
centaur is on a distinguished road
Default

^Rekao bih da bas volis da sve "prodje" kroz tvoje ruke cim ne koristis facebook PHP SDK

Ko koristi PHP SDK (npr ja), nema nikakvo cimanje.
Osim sto se u fb_init() doda oauth: true i promeni params u scope sve sto treba da uradi je da promeni:
Kôd:
$a = $Facebook->getSession();
u
Kôd:
$a = $Facebook->getUser();
i to je sve. Ne vise od 5 minuta posla (racunajuci i download novog PHP SDK).

Poslednja izmena od centaur : 16. 12. 2011. u 14:32.
centaur je offline   Odgovorite uz citat
Staro 16. 12. 2011.   #6
Peca
Super Moderator
Knowledge base
 
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
Peca će postati "faca" uskoroPeca će postati "faca" uskoroPeca će postati "faca" uskoro
Default

pogresna procena vodjena mišlju "samo mi i taj PHP SDK fali".
zapravo, pogresna procena da cu sa njim dodatno da se upetljam
nisam hteo ni da pogledam taj njihov SDK :/
__________________
Vesti | MyCity | Igrice | Zaštita od virusa
Peca je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 20:03.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.