2012-03-24 11 views
1

Ich bin Integration Facebook connect in meiner Website mit PHP SDK .. Alles funktioniert gut, außer dass ich das anstelle von Umleitung auf Facebook zur Authentifizierung möchte, möchte ich OAuth Dialog öffnen .. Derzeit Im mit folgenden uRL zur Authentifizierung, .. Es Book umleitet tut, aber nicht offen OAuth Dailog ..Open Auth Dialog in Facebook php SDK

https://www.facebook.com/dialog/oauth?client_id=XXXXXXXXXXX&redirect_uri=http%3A%2F%2Fwww.setsail2nz.com.au%2Fmicrosite%2Ffbalbums.php%3Fpid%3D1&state=ad89eddd7f71e7337785f604710c97e8&scope=user_photos%2Cpublish_stream%2Cmanage_friendlists%2Cemail&display=popup

Irgendwelche Ideen?

EDIT: Ich weiß, wie es mit Facebook JS SDK .. Aber gibt es eine Möglichkeit, es mit PHP zu tun?

Edit 2: Okay jetzt im JS SDK verwenden, aber es ist immer noch nicht den Dialog .. Öffnen Hier ist mein Code

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : 'XXXXXXXXXX', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true, // parse XFBML 
    oauth : true // enables OAuth 2.0 
    }); 
    }; 

    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document)); 

    function fblogin() 
    { 
    FB.login(function(response) 
    { 
     alert(response); 

    },{perms: "user_photos,publish_stream,manage_friendlists,email"}); 
    } 
</script> 
+0

Sie können JS-SDK dafür verwenden. –

+0

Ja, ich weiß über Javascript .. aber gibt es eine Möglichkeit, es mit PHP Sdk zu tun? – casper123

Antwort

0

Zur Beantwortung Ihrer Frage über die Dialogantwort mit PHP SDK Erkennung:

die prob lem ist, dass getloginURL nur einen URL-Parameter verwendet, den er bei Erfolg oder Fehler verwendet. Ich musste feststellen, ob der Benutzer im Berechtigungsdialogfeld auf "OK" oder "Abbrechen" geklickt hat. So konnte ich entweder zu einer Dialogseite mit Vorberechtigungen umleiten oder den korrekten angemeldeten Inhalt anzeigen.

Alles, was ich tat, war zu überprüfen, ob 'error_reason' in den URL-Parametern vorhanden war, und wenn der Fehler 'user_denied' war, und die entsprechenden Maßnahmen ergriffen. Es könnte einen besseren Weg geben, aber das hat für mich funktioniert.

<?php 
    //Facebook Authentication 
    $user = $facebook->getUser(); 

    //Get Login URL 
    $loginUrl = $facebook->getLoginUrl(); 

    //User is logged in 
    if ($user) { 
     try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 
    } 

    //User is not logged in 
    if (!$user) { 
     //Check if error_reason was generated and if the user denied login 
     if (isset($_REQUEST['error_reason']) && ($_REQUEST['error_reason']=='user_denied')) { 
      //user cancelled permissions dialog thus not logged in to app, redirect elsewhere 
      echo "<script type='text/javascript'>top.location.href = 'YOUR REDIRECT URL';</script>"; 
      exit; 
     } else { 
      //user not logged in so initiate permissions dialog 
      echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
      exit; 
     } 
    } 

    //get user basic description 
    $userInfo = $facebook->api("/$user"); 
?>