Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Facebook Connect problem, facebook / php-sdk
indexx
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Witam

Męczę się z pewnym problemem odnośnie logowania z konta facebook na stronie, dane pobieram, wszystko jest ok ale za żadne skarby nie mogę wywołać pozwoleń dot email, tzn pobieram tylko podstawowe dane, a potrzebuję jeszcze email

Normalne wywołanie to:
  1. $facebook->getLoginUrl();


a, żeby uzyskać pozwolenie powinien wyglądać tak:

  1. $facebook->getLoginUrl(array('perms'=> 'email'));



Link nie zmienia się, a powinno zostać doklejone &perms=email

Ale niestety nie działa, czy ktoś już korzystał z tego i może wie jak ten problem rozwiązać?

Ten post edytował indexx 25.03.2011, 12:25:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
#luq
post
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Dlaczego mi dziś nikt nie wierzy (IMG:style_emoticons/default/sad.gif)

http://apps.facebook.com/luq-foo

Kod:
  1. <?php
  2. require_once './facebook.php';
  3.  
  4. $facebook = new Facebook(array(
  5. 'appId' => 'xxx',
  6. 'secret' => 'xxx',
  7. 'cookie' => true,
  8. 'xfbml' => true,
  9. ));
  10.  
  11. $session = $facebook->getSession();
  12. echo '<pre>';
  13. print_r( $session );
  14. echo '</pre>';
  15. if(!$session){
  16. $url = $facebook->getLoginUrl(array(
  17. 'canvas' => 1,
  18. 'fbconnect' => 0,
  19. 'req_perms' => 'email'
  20. ));
  21. echo "<script type='text/javascript'>top.location.href = '$url';</script>";
  22. exit();
  23. }
  24. else{
  25. echo '<pre>';
  26. print_r($facebook->api('/me'));
  27. echo '</pre>';
  28. }
  29. ?>


Po prostu jak masz sesje dla aplikacji i tą aplikację usuniesz z "Aplikacje, z których korzystasz" to dalej masz przydzieloną sesję do niej bo jest ona przydzielana na określony czas...

@up
Cytat
Cytat
Cytat
Zapisać do bazy? A po co? Nie widzę najmniejszego sensu.


po to zeby wyslac userowi email, nawet jesli nie uzywa akurat aplikacji. Po to miedzy innymi sa te smieszne hashowane adresy email ktore leca przez facebook.com(z tego co pamietam zapisywanie innych w Twojej bazie jest niezgodne z regulaminem, ale i tak wszyscy to robia).

Ale to co zwróci getLoginUrl()?

Cytat
Cytat
Sesje możemy pobrać (a właściwie to głównie o access_token chodzi) przez metodę getSession()

sesja to nie do konca jest access token. Access token pobierasz za pomoca getAccessToken smile.gif

Aj tam czepiasz się słówek ;P Oczywiście chodziło mi o to że sesja jest złożona z access_token
  1. /**
  2.   * Gets a OAuth access token.
  3.   *
  4.   * @return String the access token
  5.   */
  6. public function getAccessToken() {
  7. $session = $this->getSession();
  8. // either user session signed, or app signed
  9. if ($session) {
  10. return $session['access_token'];
  11. } else {
  12. return $this->getAppId() .'|'. $this->getApiSecret();
  13. }
  14. }


Ten post edytował #luq 29.03.2011, 01:00:33
Go to the top of the page
+Quote Post
yevaud
post
Post #3





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(#luq @ 29.03.2011, 01:53:43 ) *
Dlaczego mi dziś nikt nie wierzy (IMG:style_emoticons/default/sad.gif)
Po prostu jak masz sesje dla aplikacji i tą aplikację usuniesz z "Aplikacje, z których korzystasz" to dalej masz przydzieloną sesję do niej bo jest ona przydzielana na określony czas...

(IMG:style_emoticons/default/smile.gif) Sesja to nie token. Sesje masz tak dlugo jak dlugo uzytkownik jest zalogowany na facebooku i/lub ma wlaczone ciastka, nie znaczy to wcale ze aplikacja ma token.
Jesli odbierzesz uprawnienia z aplikacji, wtedy token pochodzi jeszcze chwile bo facebook propaguje zmiany, ale po chwili przestaje dzialac, a poniewaz dalej bedziesz go wysylal to facebook go odrzuci i dostaniesz krzaki

btw. dostep do czesci /me jest publiczny, token golej aplikacji wystarcza w pelni. Aby zadzialalo /me wystarczy nieautoryzowana sesja na tokenie zautentykowanej aplikacji

konczac temat sesji/tokenu: Facebookowa sesja moze zawierac token, ale nie musi. Sesja oznacza ze user jest zalogowany w facebooku, dostajesz wtedy w sesji jego uid. W momencie gdy user dodatkowo da uprawnienia dla aplikacji i przekaze jej token, wtedy token dopisywany jest do sesji, ale token nie jest sesja, sesja moze go opcjonalnie zawierac. Jesli nie ma sesji, to znaczy ze wszedl user ktory nie zalogowal sie na facebooku(moze nawet nie ma tam konta)

Ten post edytował yevaud 29.03.2011, 01:08:35
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 18:44