Mam pewien problem, napisałem aplikację na facebook, jak zwykła aplikacja (App on Facebook) wszystko było w porządku, problem pojawił się po przeniesieniu do zakładki fanpage (page tab). Powodem tego jest nieco inny sposób weryfikacji uprawnień.

W dokumentacji ( https://developers.facebook.com/docs/authen...ation/pagetab/) znalazłem coś takiego:
  1. <script>
  2. var oauth_url = 'https://www.facebook.com/dialog/oauth/';
  3. oauth_url += '?client_id=YOUR_APP_ID';
  4. oauth_url += '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/pages/null/PAGE_ID/?sk=app_YOUR_APP_ID');
  5. oauth_url += '&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES'
  6.  
  7. window.top.location = oauth_url;
  8. </script>


Działa to u mnie, tylko jak to zatrzymać? po wczytaniu zakładki prosi o uprawnienia, dostaje - następnie przeładowuje strony (bez proszenia o uprawnienia) i tak cały czas. W dokumentacji (link powyżej) znajduje "Parse and verify the signed_request parameter upon load" jednak nie potrafie tego wykorzystać (nie wiem co i jak wyciągnąć) aby zatrzymać skrypt weryfikujący. Mogę prosić o pomoc, fragment kodu do przeanalizowania?



--EDIT--


Jednak udało mi się to napisać, aż wstyd, że tak długo siedziałem nad takim banałem. Zrobiłem coś takiego:
  1. <?php
  2. require_once 'facebook.php';
  3. $facebook = new Facebook(array(
  4. 'appId' => 'APP_ID', // App_id
  5. 'secret' => 'App Secret', // App scret
  6. ));
  7.  
  8.  
  9. if (isset($_REQUEST['signed_request'])) { //odczytywanie signed_request
  10. $encoded_sig = null;
  11. $payload = null;
  12. list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
  13. $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
  14. $signed_request = json_decode(base64_decode(strtr($payload, '-_', '+/'), true),true);
  15. }else {echo "ERROR";}
  16.  
  17. if($signed_request['user_id'] == NULL) //sprawdzanie pola user_id - zgodnie z dokumentacją to pole po autoryzacji powinno zawierać USER_ID
  18. { //wywołanie okna z prośbą o uprawnienia, uzupełniamy odpowiednio App id, Page ip, i potrzebne uprawnienia
  19. echo "<script> //wywołanie okna z prośbą o uprawnienia
  20. var oauth_url = 'https://www.facebook.com/dialog/oauth/';
  21. oauth_url += '?client_id=YOUR_APP_ID';
  22. oauth_url += '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/pages/null/PAGE_ID/?sk=app_YOUR_APP_ID');
  23. oauth_url += '&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES'
  24.  
  25. window.top.location = oauth_url;
  26. </script>";
  27. }
  28. else
  29. {
  30. echo 'jest'; //aplikacja w momencie gdy zweryfikowana
  31. }
  32. ?>

Mam nadzieje, ze komuś się przyda i nie będzie marnował tyle czasu co ja wink.gif Jednocześnie jeśli ktoś widzi tu jakieś błędy, lub ta technika jest nieprawidłowa - proszę o komentarz.