2015-09-30 21 views
5

Tôi cần đăng thông báo trên trang Facebook. Cụ thể tôi muốn đăng qua cron.Nhận mã thông báo truy cập trang bằng Facebook API 5.0 PHP

Đây là những gì các tài liệu API nói:

Page Access Token – These access tokens are similar to user access tokens, except that they provide permission to APIs that read, write or modify the data belonging to a Facebook Page. To obtain a page access token you need to start by obtaining a user access token and asking for the manage_pages permission. Once you have the user access token you then get the page access token via the Graph API.

Làm thế nào tôi có thể có được một người dùng truy cập và trang access token mà không có một callback trang? Điều này có thể không?

+0

Bạn đang cố gắng làm điều đó từ cron, hay PHP? –

+0

@NateBarbettini ngay cả với cron nó có thể là PHP, đây không phải là loại trừ lẫn nhau ...? –

+0

@AxelAmthor Đủ công bằng, tôi quên mất điều đó. –

Trả lời

5

Điều bạn cần nó là Mã trang mở rộng, mã này hợp lệ mãi mãi. Bạn nhận được một như thế này:

  • Authorize với manage_pages phép (và publish_pages nếu bạn muốn gửi như trang sau), để có được một tài khoản Mã
  • Mở rộng User Mã
  • Sử dụng /me/accounts?fields=access_token với Extended sử dụng Mã để có được một danh sách tất cả các trang của bạn với trang Tokens Extended - hoặc sử dụng /page-id?fields=access_token để có được một mở rộng trang Mã cho một trang cụ thể

Thông tin về tất cả các Token và làm thế nào để mở rộng Token sử dụng:

0

Tôi chỉ có mã JavaScript, nhưng khi bạn có mã thông báo truy cập, bạn có thể nhận được các trang có thể được quản trị viên bởi người dùng đã cho. Điều này sẽ chứa một mã thông báo truy cập trang cho mỗi người trong số họ:

jQuery.ajax({type: "GET", 
       url: "https://graph.facebook.com/v2.2/me/accounts?access_token=" + userToken, 
       async: false, 
       data: jsonRequest, 
       dataType: "json", 
       cache: false, 
       success: function(data) 
       { 

Các thông số trên lại giống như:

{ 
    "data": [ 
    { 
     "access_token": "CAACni8TcBB0B...cZBJfwZDZD", 
     "category": "Computers/Technology", 
     "name": "abc", 
     "id": "...", 
     "perms": [ 
     "ADMINISTER", 
     "EDIT_PROFILE", 
     "CREATE_CONTENT", 
     "MODERATE_CONTENT", 
     "CREATE_ADS", 
     "BASIC_ADMIN" 
     ] 
    }, 
    { 
     "access_token": "CAA...ZDZD", 
     "category": "App Page", 
     "name": "xyz", 
     "id": "....", 
     "perms": [ 
     "ADMINISTER", 
     "EDIT_PROFILE", 
     "CREATE_CONTENT", 
     "MODERATE_CONTENT", 
     "CREATE_ADS", 
     "BASIC_ADMIN" 
     ] 
    } 
    ], 

access_token là thẻ trang của bạn. Bạn có thể chuyển đổi yêu cầu ở trên thành PHP dễ dàng.

+0

Cảm ơn rất nhiều phản hồi của bạn. Tôi hiểu cách tôi có thể nhận mã thông báo truy cập trang. Nhưng làm cách nào tôi có thể nhận được mã thông báo người dùng? –

+0

Hãy suy nghĩ tôi tìm thấy: 1) Nhận Mã truy cập từ: https://developers.facebook.com/tools/explorer/ 2) Nhận mã thông báo truy cập trực tiếp từ https://graph.facebook.com/oauth/ access_token? grant_type = fb_exchange_token & client_id = & client_secret = & fb_exchange_token = 3) Nhận mã thông báo truy cập vĩnh viễn với liên kết tiền lệ của bạn –

2

V5 PHP API

Mã dưới đây làm việc cho tôi sau 24 giờ kể từ đầu gãi .... hy vọng điều này sẽ giúp bằng cách này nếu bạn cần điều này mã hoạt động, bạn nên hoàn tất hai bước đầu tiên

  1. Nên có đăng nhập vào facebook tôi đã sử dụng getRedirectLoginHelper
  2. biến Set phiên với nhận access token người dùng trên gọi lại nộp $_SESSION['fb_access_token'] = (string) $accessToken;

$fbApp = new Facebook\FacebookApp('xxx', 'xxx', 'v2.7'); 
$fb  = new Facebook\Facebook(array(
    'app_id' => 'xxx', 
    'app_secret' => 'xxx', 
    'default_graph_version' => 'v2.7' 
)); 
$requestxx = new FacebookRequest(
    $fbApp, 
    $_SESSION['fb_access_token'],//my user access token 
    'GET', 
    '/{page-id}?fields=access_token', 
    array('ADMINISTER') 
); 
$responset = $fb->getClient()->sendRequest($requestxx); 
$json   = json_decode($responset->getBody()); 
$page_access = $json->access_token; 

//posting to page 
$requesty = new FacebookRequest(
    $fbApp, 
    $page_access , 
    'POST', 
    '/{page-id}/feed?message=Hello fans YYYYYYYYYYYYYYY' 
); 
$response = $fb->getClient()->sendRequest($requesty); 
var_dump($response); 
+0

Đây là câu trả lời tôi đang tìm kiếm! Cảm ơn. –

+0

Không hoạt động, ném lỗi nghiêm trọng: Lớp 'FacebookRequest' không được tìm thấy trong /home/wwwdj4yo/public_html/wp-content/plugins/fb-reviews/classes/_import.php trên dòng 24. Vui lòng thử thực sự kiểm tra câu trả lời trước khi đăng bài, vì nó giúp người khác khỏi lãng phí thời gian của họ khi nhận lời khuyên từ những người không biết họ đang nói về điều gì. –

+1

Hãy hiểu rằng tôi đã kiểm tra bằng cách sử dụng tệp php không nằm trong plugin wp, Tác vụ này đã hoạt động trở lại vào năm 2016 và một người khác vào năm 2017, do đó thay vì sao chép mã, vui lòng kiểm tra tài liệu và so sánh mã của bạn! – Fara

1

Bạn có thể nhận được trang token theo cách này:

$response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken); 
$json = json_decode($response->getBody()); 
$page_token = $json->access_token; 
$response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token); 
Các vấn đề liên quan