2012-03-21 24 views
7

Tôi gặp sự cố kể từ khi Facebook xóa quyền truy cập offline_access.Mã truy cập mở rộng từ Facebook không hoạt động đúng cách

thử 2 điều:

  1. Tôi đang thực hiện cuộc gọi theo đề nghị của Facebook.

    https://graph.facebook.com/oauth/access_token?    
        client_id=APP_ID& 
        client_secret=APP_SECRET& 
        grant_type=fb_exchange_token& 
        fb_exchange_token=EXISTING_ACCESS_TOKEN 
    
  2. Tôi cũng đã cố gắng SDK Android, trong đó sử dụng một ý định để có được một thẻ truy cập mở rộng:

    intent.setClassName("com.facebook.katana", "com.facebook.katana.platform.TokenRefreshService"); 
    

Tại developers.facebook.com tôi đặt ứng dụng của tôi để "Native/Máy tính để bàn ".

Tôi đã vô hiệu hóa số offline_access trên cài đặt Ứng dụng.

Tôi đã xóa các quyền cũ khỏi tài khoản Facebook của mình trước khi thử.

Cả hai phương pháp đều cung cấp cho tôi mã thông báo 24 giờ. Có thể ai đó có thể giúp tôi thực hiện cuộc gọi phù hợp để nhận mã thông báo 60 ngày?

Tôi đã thấy một số báo cáo lỗi về sự cố này, nhưng cũng đã được giải quyết. Có vẻ như không phải trong trường hợp của tôi.

+1

Có lẽ bạn nên tự hỏi hỗ trợ Facebook về điều này. – kapa

Trả lời

0

Bạn đã kiểm tra xem mã thông báo có kéo dài hơn 24 giờ không? Theo tài liệu, trong một số trường hợp, chỉ có thời gian hết hạn được cập nhật trong khi các dấu hiệu vẫn giữ nguyên:

Các access_token trở sẽ có một tồn tại lâu dài thời gian hết hạn tươi, tuy nhiên, các access_token thân thể hoặc có thể không giống với access_token đã tồn tại lâu đời được cấp trước đó.

0

Giả sử bạn đang sử dụng SDK Facebook, tất cả đều có phương pháp xây dựng chính xác điều đó.

facebook.extendAccessTokenIfNeeded(this, null); 

đây là ngữ cảnh và không phải là serviceListener.

Bạn có thể sử dụng extendAccessToken là tốt, cùng chính

+2

Trên thực tế, phiên bản Android SDK hiện tại sẽ chỉ sử dụng dịch vụ com.facebook.katana; có nghĩa là nếu người dùng chưa cài đặt ứng dụng, mã thông báo sẽ không được làm mới. – Cristian

1

sử dụng chức năng sau đây để nhận mã thông báo truy cập mở rộng: public function getExtendedAccessToken() {

try { 
    // need to circumvent json_decode by calling _oauthRequest 
     // directly, since response isn't JSON format. 
    $access_token_response = 
     $this->_oauthRequest(
      $this->getUrl('graph', '/oauth/access_token'), 
      $params = array( 'client_id' => $this->getAppId(), 
           'client_secret' => $this->getApiSecret(), 
           'grant_type'=>'fb_exchange_token', 
           'fb_exchange_token'=>$this->getAccessToken(), 
         )); 

} catch (FacebookApiException $e) { 
    // most likely that user very recently revoked authorization. 
    // In any event, we don't have an access token, so say so. 
    return false; 
} 

if (empty($access_token_response)) { 
    return false; 
} 

$response_params = array(); 
parse_str($access_token_response, $response_params); 
if (!isset($response_params['access_token'])) { 
    return false; 
} 

return $response_params['access_token']; 

}

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