Facebook SDK und das speichern des Logins.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Facebook SDK und das speichern des Logins.

    Hallo,

    Ich bin gerade dabei mich mit dem Facebook SDK auseinander zusetzen. Denn ich plane ein Modul für mein CMS, wo ich automatisch Inhalte von Twitter,Facebook und co. posten kann, wenn die Funktion getriggert wird.

    Nun habe ich folgendes schon gemacht:
    - Facebook Anwendung erstellt + passende Berechtigungen.
    - FB SDK dazu bewegt Nachrichten an meine FanPage zu senden

    Nun möchte ich gerne den Login/Session irgendwie speichern, damit das Modul später automatisch posten kann.

    Denn jetzt ist es ja so, dass die Session im Browser ist. Das Modul wird später nur einen Configbereich haben, wo die Einstellungen festgelegt werden. Danach muss es automatisch funktionieren.

    Also folgender Code ist vorhanden:

    PHP-Quellcode

    1. require './src/facebook.php';
    2. $app_id = '123456';
    3. $secret = 'abcdef';
    4. $app_url = 'http://apps.facebook.com/namespace';
    5. $root_url = 'http://'.$_SERVER['SERVER_NAME'].''.$_SERVER["PHP_SELF"];
    6. // create instance
    7. $facebook = new Facebook(array(
    8. 'appId' => $app_id,
    9. 'secret' => $secret,
    10. ));
    11. // Get User ID
    12. $user = $facebook->getUser();
    13. // Login if user not logged in
    14. if(!$user) {
    15. $loginUrl = $facebook->getLoginUrl(array(
    16. 'scope' => 'publish_stream, offline_access, status_update, manage_pages',
    17. 'redirect_uri' => $root_url
    18. ));
    19. header('Location: '.$loginUrl);
    20. } else {
    21. try {
    22. // get user info
    23. $user_profile = $facebook->api('/me');
    24. $id = $user_profile['id'];
    25. // get user accounts (users and pages)
    26. $accounts = $facebook->api('/me/accounts');
    27. // my first fanpage, can be chosse later on Adminarea
    28. $tokken = $accounts['data'][0][access_token];
    29. // Vars for Stream post action
    30. $vars = array(
    31. 'access_token' => $tokken,
    32. 'name' => 'Test',
    33. 'message' => utf8_encode('Dies ist ein Text Beispiel für die Graph-API von Facebook'),
    34. 'caption' => 'Test-Applikation',
    35. #'link' => '',
    36. #'description' => ''
    37. #'picture' => ''
    38. );
    39. // send stream post
    40. $result = $facebook->api('/me/feed','post',$vars);
    41. if($result) {
    42. $output = 'Post gesendet';
    43. } else {
    44. $output = 'Post NICHT gesendet';
    45. }
    46. } catch (FacebookApiException $e){
    47. echo $e;
    48. $user=null;
    49. }
    50. }
    51. print '<pre><b>ME:</b>';
    52. print_r($user);
    53. print '<br /><br /><b>Accounts</b><br />';
    54. print_r($accounts);
    55. print '<br /> <br/><b>UserProfile:</b><br />';
    56. print_r($user_profile);
    57. print $output;
    58. print_r($_SESSION);
    59. print '</pre>';
    Alles anzeigen


    Nun meine Frage: Wie führt man das Script fort, um die Loginprozedur zu überspringen. Quasi ein richtiger offline Access?
    Beste Grüße,
    M4rc3L-XCN
  • Damit dein Script ohne richtige User Session arbeiten kannst, musst du dir vorher einen Access Token holen
    $token = $facebook->getAccessToken();

    und dann in deinem Offline Script den Access Token setzen
    $facebook->setAccessToken($token);

    Allerdings klappt das nur einmalig oder nur für einen kurzen Zeitraum. Damit der Access Token länger gültig bleibst, musst du das so vorher aufrufen
    $facebook->setExtendedAccessToken()

    Mehr Informationen auch hier im Forum:
    stackoverflow.com/questions/10…ow-that-offline-access-is