2014-05-03 26 views
5

Tôi đang cố đăng nhập Facebook bằng PHP SDK 4.0 mới hoạt động cho trang web của tôi. Tôi theo sát ý chính của họ gần như nguyên vẹn và vẫn không thể có được một trang thử nghiệm để làm việc. Khi tôi cố gắng đăng nhập, tôi nhận được chuyển hướng đến một url có dạng:Facebook PHP SDK 4.0 Đăng nhập

https://www.facebook.com/v2.0/dialog/oauth?client_id={some number}&redirect_uri{localhost%2F%7E{MyName}%2F{my site}}&state=08d94ec4670256aa2b2c586781590766&sdk=php-sdk-4.0.0&scope= 

tôi đã điền url cùng trên trang nhà phát triển Facebook của tôi đã có, và điều này là mã tôi đang cố gắng để kiểm tra:

<?php 

require_once('Facebook/FacebookSession.php'); 
require_once('Facebook/FacebookRedirectLoginHelper.php'); 
require_once('Facebook/FacebookRequest.php'); 
require_once('Facebook/FacebookResponse.php'); 
require_once('Facebook/FacebookSDKException.php'); 
require_once('Facebook/FacebookRequestException.php'); 
require_once('Facebook/FacebookAuthorizationException.php'); 
require_once('Facebook/GraphObject.php'); 

use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 
use Facebook\FacebookRequest; 
use Facebook\FacebookResponse; 
use Facebook\FacebookSDKException; 
use Facebook\FacebookRequestException; 
use Facebook\FacebookAuthorizationException; 
use Facebook\GraphObject; 

// start session 
session_start(); 

// init app with app id and secret 
FacebookSession::setDefaultApplication('{My app ID}','{My app secret}'); 

// login helper with redirect_uri 
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}'); 

try { 
    $session = $helper->getSessionFromRedirect(); 
} catch(FacebookRequestException $ex) { 
    // When Facebook returns an error 
} catch(Exception $ex) { 
    // When validation fails or other local issues 
} 

// see if we have a session 
if (isset($session)) { 
    // graph api request for user data 
    $request = new FacebookRequest($session, 'GET', '/me'); 
    $response = $request->execute(); 
    // get response 
    $graphObject = $response->getGraphObject(); 

    // print data 
    echo '<pre>' . print_r($graphObject, 1) . '</pre>'; 
} else { 
    // show login url 
    echo '<a href="' . $helper->getLoginUrl() . '">Login</a>'; 
} 

Thật không may, tôi không bao giờ được chuyển hướng lại hoặc thậm chí tải trang đăng nhập. Tôi có thể làm gì sai ở đây?

Trả lời

7

Tôi gặp sự cố tương tự. Trước tiên, bạn cần đặt URL miền và URL trang web trong cài đặt Ứng dụng Facebook của mình. Chuyển đến trang này để thay đổi cài đặt của bạn: https://developers.facebook.com/apps.

Tôi đã chia sẻ từng bước ở đây: http://bit.ly/1iNNsBy

0

Đây có phải là mã bạn đang sử dụng không?

$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}'); 

Bạn sẽ được chuyển hướng từ Facebook, do đó, đối số ở đây cần phải là URL có thể truy cập từ Internet.

4

Bạn không phải bao gồm tệp php. Facebook muốn bạn sử dụng nhà soạn nhạc để quản lý những gì được yêu cầu.

Tuy nhiên .... chúng cung cấp cho bạn cách giải quyết: Bao gồm autoload.php và giữ cấu trúc tệp mà chúng cung cấp cho bạn để triển khai dễ dàng nhất. Để dễ dàng, đặt tất cả các tập tin từ SDK vào một thư mục có tên facebook, vì vậy bạn có một thư mục phụ trong đó được gọi là src và trong phạm vi mà người khác gọi là Facebook

Sau đó SDK tạo ra một liên kết mà người dùng của bạn có thể bấm vào để cho phép truy cập vào ứng dụng của bạn.

Nếu bạn đang thử nghiệm, bạn cần phải tiếp tục xóa ứng dụng khỏi hồ sơ facebook của mình để có cửa sổ đăng ký mỗi lần (Settings thả xuống trên cùng bên phải, sau đó Apps ở bên trái tính đến tháng 8 năm 2014), nếu không nó sẽ bị chuyển thẳng đến trang chuyển hướng được chỉ định của bạn và sẽ xuất hiện như thể không có gì hoạt động.

// if you include this file you don't need to use composer 
require_once('facebook/autoload.php'); 

// use these 
use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 

// initiate the session 
FacebookSession::setDefaultApplication('[YOUR ID]', '[YOUR SECRET]'); 

// use the helper 
$helper = new FacebookRedirectLoginHelper('[YOUR REDIRECT URL]'); 
// get a loginurl 
$loginUrl = $helper->getLoginUrl(); 


echo "<a href='".$loginUrl."'>Link here</a>"; 

Thuyết minh kiểm tra:

  1. Kiểm tra bạn đã thiết lập một ứng dụng thử nghiệm trên facebook.
  2. Kiểm tra miền khớp với tên miền bạn đang sử dụng.
  3. Kiểm tra url đầy đủ cho trang chuyển hướng mà bạn sẽ sử dụng để xử lý phản hồi.
2

Tập lệnh chưa hoàn thành. Bạn phải viết một phần khác trong đó nếu phiên không được thiết lập. Yêu cầu quyền có vai trò ở đây.

else { 
    $helper = new FacebookRedirectLoginHelper('https://apps.facebook.com/yourappname/'); 
    $permissions = array(
     scope =>'publish_actions', 
       'email', 
       'user_location', 
       'user_birthday' 
    ); 

    // Get login URL 
    $auth_url = $helper->getLoginUrl($permissions); 
    //$auth_url = $helper->getLoginUrl(array('email')); 
    echo "<script>window.top.location.href='".$auth_url."'</script>"; 
0

Tôi đã có vấn đề khi cố gắng thực hiện

$loginUrl = $helper->getLoginUrl(); 

Giải pháp là để gọi:

session_start(); 

trước

$helper = new FacebookRedirectLoginHelper($redirect_url); 

về câu trả lời @ DigitalVisual của trên.

0
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}'); 

Sử dụng như:

$helper = new FacebookRedirectLoginHelper('http://example.com/help.php'); 

Phải sử dụng URL đầy đủ.

Các vấn đề liên quan