2012-04-27 34 views
5

Tôi đang làm việc trên xác thực twitter, mọi thứ dường như hoạt động tốt cho đến khi tôi nhận được getAccessToken trả về Array ([ ] =>).Twitter OAUTH trả về một mảng trống

Những gì tôi đã làm:

  1. giai đoạn đầu tiên:

    $connection = new TwitterOAuth('xxxxxxxx','xxxxxxxx'); 
    
    $temporary_credentials = $connection->getRequestToken('http://example.com/profile.php?passurl=1'); 
    
    $redirect_url = $connection->getAuthorizeURL($temporary_credentials); 
    
    $_COOKIE['oauth_token'] = $temporary_credentials['oauth_token']; 
    
    $_COOKIE['oauth_token_secret'] = $temporary_credentials['oauth_token_secret']; 
    
    header("Location: $redirect_url"); 
    
  2. giai đoạn thứ hai (đây là nơi mà tôi gặp phải vấn đề)

    $connection = 
         new TwitterOAuth(
           'xxxxxxxxxx', 
           'xxxxxxxxxx', 
           $_COOKIE['oauth_token'], 
           $_COOKIE['oauth_token_secret'] 
           ); 
    $token_credentials = $connection->getAccessToken(); 
    

tôi dự định lưu các giá trị $token_credentials trong cơ sở dữ liệu nhưng nó trả về một mảng trống: Array ([ ] =>)

Tôi không nhận được quyền gì?

+2

lần sau hãy thử thụt lề mã của bạn trước khi đăng, nó hoàn toàn không thể đọc được! – m09

+0

cảm ơn bạn đã chỉnh sửa! –

+0

Trong 'twitteroauth.php' thêm' var_dump ($ response); 'vào cuối hàm' http'. Đây sẽ là phản hồi thô được trả về từ Twitter. Có phải đó là lỗi hoặc mã thông báo truy cập không? – abraham

Trả lời

3

Bạn có chuyển "oauth_verifier" sang phương thức getAccessToken không? Trong mã mẫu bạn đang đưa ra, bạn không làm điều đó. Hãy nhìn vào sơ đồ này, đặc biệt trên phần D

OAuth Diagram

Tôi đã sử dụng twitteroauth trong quá khứ và tôi nhớ mình làm việc đó như thế này. (Bắt đầu fase thứ hai)

$twitterOauth = new TwitterOAuth($AppId, $twSecret, $_COOKIE['oauth_token'], $_COOKIE['oauth_token_secret']); 
$twToken = $twitterOauth->getAccessToken($_REQUEST['oauth_verifier']); 

$newTwitterOauth = new TwitterOAuth($AppId, $twSecret, $twToken['oauth_token'], $twToken['oauth_token_secret']); 
$response = (array) $newTwitterOauth->get('account/verify_credentials'); 
var_dump($response); 

Có một vài gợi ý tôi sẽ làm mặc dù:

  • Thay vì stoing rằng thông tin trong cookie, tôi đề nghị bạn nên sử dụng phiên để thực hiện công việc.
  • Nếu bạn nhấn mạnh vào việc sử dụng cookie, vui lòng sử dụng chức năng setcookie.
+0

vâng, bạn nhấn hai vấn đề: 1. tôi đã không đặt cookie đúng cách. 2. tôi đã không vượt qua oauth _verifier để getAccessToken. –

0

Bạn học lớp TwitterOAuth từ đâu? Đây có phải là một lớp học tiêu chuẩn không? Hay bạn đã tự viết nó? Tôi sẽ cố gắng gỡ lỗi chính lớp và đưa đầu ra tiết hơn vào các hàm lớp.

+0

am bằng cách sử dụng này: https://github.com/abraham/twitteroauth ... xin vui lòng đề nghị bất kỳ sửa chữa. cảm ơn bạn –

+0

Thử gửi câu hỏi về github cho dự án đó. Bạn có thể nhận được phản hồi tốt hơn ở đó vì đây là lớp tùy chỉnh. –

+0

là có bất kỳ lớp học nào khác có thể sử dụng. Tôi thực sự cần phải làm việc này! arghh !!! –

0

tại sao bạn sử dụng cookie? sử dụng cookie đó là một nguy cơ tiềm ẩn vì được lưu trữ trên các mặt hàng, sử dụng PHIÊN thay

Câu hỏi khác: trong teh $redirect_url nếu u làm cho một print_r của $_COOKIE['oauth_token'] và một trong những khác, r trống rỗng?

Tôi yêu cầu điều này bởi vì nếu u vô hiệu hóa cookie của một số addon (như nhà phát triển web trong firefox) hoặc trong cấu hình trình duyệt. Có thể u r sử dụng giá trị trống trên $_COOKIE['oauth_token'], và $_COOKIE['oauth_token_secret'].

+0

tôi đang gặp sự cố khi đặt SESSIONS trên trang web, tạm thời để thử nghiệm bằng cách sử dụng COOKIES thực sự chứa đúng giá trị. –

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