2011-08-05 34 views
6

Tôi mới dùng PHP, và đã có một thời gian rất khó hiểu hệ thống đăng nhập facebook.Kết hợp đăng nhập facebook, sử dụng facebook php-sdk (v.3.0.0), với phiên và cookie

Tôi đã tải xuống ba tệp src/từ github (https://github.com/facebook/php-sdk/). Tôi đã thử sử dụng tệp example.php để bắt đầu. Tuy nhiên, tôi không chắc chắn phải làm gì với nó.

Đối với những người không quen với các tập tin, đây là một bản sao của example.php, với một số các phong cách loại bỏ:

require '../src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '...', 
    'secret' => '...', 
)); 
$user = $facebook->getUser(); 
if ($user) { 
    try { 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 
$naitik = $facebook->api('/naitik'); 
?> 
<!doctype html> 
<html xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <body> 
    <?php if ($user): ?> 
     <a href="<?php echo $logoutUrl; ?>">Logout</a> 
    <?php else: ?> 
     <div> 
     Login using OAuth 2.0 handled by the PHP SDK: 
     <a href="<?php echo $loginUrl; ?>">Login with Facebook</a> 
     </div> 
    <?php endif ?> 

    <h3>PHP Session</h3> 
    <pre><?php print_r($_SESSION); ?></pre> 

    <?php if ($user): ?> 
     <h3>You</h3> 
     <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"> 

     <h3>Your User Object (/me)</h3> 
     <pre><?php print_r($user_profile); ?></pre> 
    <?php else: ?> 
     <strong><em>You are not Connected.</em></strong> 
    <?php endif ?> 

    <h3>Public profile of Naitik</h3> 
    <img src="https://graph.facebook.com/naitik/picture"> 
    <?php echo $naitik['name']; ?> 
    </body> 
</html> 

Dưới đây là những câu hỏi tôi có liên quan đến nó:

1) Điều gì về cookie? - Tôi muốn người dùng có thể đăng nhập vào trang web của tôi sau khi mở lại trình duyệt của mình.

2) Số tiền tối thiểu tôi cần để lấy ra khỏi tệp example.php này là xác thực/đăng ký người dùng, bắt đầu phiên, lưu phiên trong cookie, lấy id người dùng fb, tên fb, fb hình ảnh, và danh sách các fb bạn bè?

3) Trong tệp src /, có một tệp 'fb_ca_chain_bundle.crt' và tôi hoàn toàn không quen thuộc với tệp như vậy và tôi không chắc liệu tệp đó có cần thiết hay không. Mục đích của nó là gì?

4) Dòng $naitik = $facebook->api('/naitik'); là "naitik" tên người dùng của người này - vì vậy nếu tôi nhập facebook.com/naitik, nó sẽ hiển thị tiểu sử công khai của anh ấy? đang thay thế "/ naitik" bằng "/ tôi" những gì sẽ nhận được hồ sơ công khai của người đăng nhập vào facebook?

5) Làm cách nào để nhận mã thông báo truy cập và cách sử dụng mã thông báo trong mã của tôi?

6) Khi tôi tạo phiên cho người dùng và cookie để người dùng đăng nhập sau khi mở lại trình duyệt, tôi nên lưu trữ chính xác những gì trong phiên và cookie của mình?

Tôi biết đây là nhiều câu hỏi, nhưng tôi đã xem qua nhiều hướng dẫn trực tuyến và không ai trong số họ thực hiện tốt công việc này, chủ yếu là vì họ chỉ liên kết lại với các tệp Github PHP-SDK. Hơn nữa, hầu hết trong số họ giải thích một phiên bản trước của PHP-SDK. Bất kỳ trợ giúp nào được đánh giá cao, với bất kỳ câu hỏi nào.

+0

[Thinkdiff] (http://thinkdiff.net/) có một số hướng dẫn cập nhật nhiều hơn hoặc ít hơn về chủ đề này. –

Trả lời

7

Để trả lời câu hỏi của bạn

1) Điều gì về cookie?

Bạn chỉ cần thêm tham số vào khởi tạo Facebook. Thay đổi nó như sau

$facebook = new Facebook(array(
    'appId' => '...', 
    'secret' => '...', 
    'cookie' => true, 
)); 

2) tối thiểu tôi cần phải thoát ra khỏi tập tin example.php này để ....

Không phải mọi thứ bạn muốn là trong ví dụ này là gì. Nửa trên của mã cho bạn biết cách kết nối và xác thực người dùng. Phần thứ hai chỉ đổ ra các chi tiết cơ bản của họ và chi tiết của naitik. Đối với phần còn lại bạn cần phải nhìn xa hơn.

3) Trong src/file, có một 'tập tin fb_ca_chain_bundle.crt,'

Mục đích của tập tin này là để đưa ra một cách giải quyết cho lỗi CURL 60.Đọc:

http://www.takwing.idv.hk/blog/2011/php-sdk-demystified-%E2%80%93-how-curl-error-60-is-handled/

4) Dòng $ naitik = $ facebook-> api ('/ naitik'); là "naitik" tên người dùng của người này - vì vậy nếu tôi nhập facebook.com/naitik, nó sẽ hiển thị tiểu sử công khai của anh ấy? đang thay thế "/ naitik" bằng "/ tôi" những gì sẽ nhận được hồ sơ công khai của người đăng nhập vào facebook?

Chính xác ngay

5) Làm cách nào để nhận mã thông báo truy cập và làm cách nào để sử dụng mã thông báo?

$ facebook-> getAccessToken();

Bạn thêm một số cuộc gọi phương thức nhưng không cần thiết cho mọi thứ.

6) Khi tôi tạo phiên cho người dùng và cookie để người dùng đăng nhập sau khi mở lại trình duyệt, tôi nên lưu trữ chính xác những gì trong phiên và cookie của mình?

Facebook SDk sẽ xử lý vấn đề đó. Bạn sẽ chỉ cần lưu trữ bất kỳ thông tin bổ sung nào về người dùng mà ứng dụng của bạn yêu cầu.

+0

Câu trả lời hay. Bất kỳ ý tưởng nào về cách tự động đăng nhập một người dùng? Điều này sẽ hữu ích cho một ứng dụng Facebook. –

+0

Tài liệu trên facebook gợi ý rằng để truy cập mã thông báo, nó sẽ được đăng lên "https://graph.facebook.com/oauth/access_token?" . "client_id =". $ app_id. "& redirect_uri =". urlencode ($ my_url) . "& client_secret =". $ app_secret. "& code =". $ code; Vì vậy, không chắc chắn nếu các cuộc gọi ở trên bạn đề nghị trong 5 là một đề nghị. – pal4life

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