0

ich mit dem folgenden Code verwenden Berechtigungen für meine App zu bekommen (der Code ist in index.php) -Berechtigungen nicht über durch wird, wenn eine neue Seite zu besuchen, während Facebook-PHP sdk

<?php 
    require_once "sdk/facebook.php"; 

    $fbconfig['appid'] = "333446170045623"; 
    $fbconfig['secret'] = "9ea7b92bc7eac852a3900e1d7931c34d"; 

    $facebook = new Facebook(array(
     'appId' => $fbconfig['appid'], 
     'secret' => $fbconfig['secret'], 
     'cookie' => true, 
    )); 

    $user = $facebook->getUser(); 

    if (!$user) { /* If user not found, authenticate */ 
$loginUrl = $facebook->getLoginUrl(
     array(
      'scope' => 'publish_stream', 
      'redirect_uri' => 'http://www.facebook.com/pages/pagename?sk=app_333446170045623' 
     )); 
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
    } 

    $signed_request = $facebook->getSignedRequest(); 
     ?> 

Jetzt gibt es ein Link auf der Seite, der den Benutzer auf eine select.php-Seite führt. Dort habe ich versucht, den folgenden Code zu verwenden, Informationen über den aktuellen User-

$user_profile = $facebook->api('/me'); 

ich auf dieser Seite die gleiche Berechtigung retreival Code wie die index.php Seite platziert haben zu bekommen.

Allerdings bekomme ich die folgende Fehlermeldung auf dieser Seite-

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /server/html/appname/sdk/base_facebook.php on line 1106 

ich die verschiedenen vorgeschlagenen Lösungen versucht haben, aber sie nicht zu funktionieren scheint. Wie verwende ich $ facebook-> api ('/ me'), um die Informationen auf dieser Seite zu erhalten? (btw ich benutze facebooks neuste php sdk)

Antwort

0

nicht sicher, warum, aber mit der getAccessToken() Methode vor

$user_profile = $facebook->api('/me'); 

mit stoppen den Fehler geben.

+0

Ich habe den gleichen Fehler. Ich kann nicht herausfinden, was du meinst. Ich habe die gleiche Antwort versucht, die Sie hier haben, aber ich kann es nicht auf meiner zweiten Seite arbeiten. Würde es Ihnen etwas ausmachen, ein bisschen zu erarbeiten? – MillerMedia

+0

@Navnath Bitte gehen Sie durch den Sprachfluss, bevor Sie etwas bearbeiten .. Sie machten es nur schlimmer (lesen Sie die ganze Antwort in einem Fluss) ... der Drang, etwas zu bearbeiten, ist überzeugend .. nur zweimal überlegen, ob es wirklich benötigt .. nur ein freundlicher Rat .. – digster

0

Wenn dies eine native Facebook App ist, haben Sie 2 Möglichkeiten. Sie können das Ziel aller Ihrer Links als übergeordneten Frame festlegen und Ihre neue URL am Ende anhängen, z. B. http://apps.facebook.com/yourapp/next.php. Alternativ können Sie die js-sdk auf der Seite einfügen, um die Anmelde- und Abmeldeereignisse mit window.reload zu verarbeiten. Wenn dies eine native App ist, werden höchstwahrscheinlich die korrekten Daten nicht von Facebook gesendet, was dazu führt, dass die signierte Anfrage usw. verloren geht und Sie das Zugangstoken verlieren.

Wenn es eine Website-Anwendung ist, würde ich auch vorschlagen, die Javascript-SDK auf der Seite verwenden.

so etwas ähnliches wie dies gerade unter dem Body-Tag auf allen Seiten

<div id="fb-root"></div> 

<script>    
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '<?php echo $app_id; ?>', 
     cookie: true, 
     xfbml: true, 
     oauth: true 
    }); 
    FB.Event.subscribe('auth.login', function(response) { 
     setTimeout('window.location.reload()',0); 
    }); 
    FB.Event.subscribe('auth.logout', function(response) { 
    setTimeout('window.location.reload()',0); 
    }); 
    }; 
    (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=433871385166"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script>