Menghasilkan "tidak pernah berakhir" akses token Facebook Page

Saya telah berhasil untuk posting ke Facebook Page melalui API (C#), tapi ketika administrator halaman log out, kesalahan berikut terjadi:

"(OAuthException - #190) Kesalahan memvalidasi akses token: sesi ini tidak valid karena pengguna log out."

Bagaimana saya menghasilkan akses token yang tidak pernah berakhir?

Aku perlu solusi yang doesn't membuka Facebook Login dialog.

Mengomentari pertanyaan (4)

Anda dapat menghasilkan tidak pernah berakhir akses token tanpa coding, berikut ini petunjuk:

  1. Open graph Explorer: https://developers.facebook.com/tools/explorer/.
  2. Pilih aplikasi anda dari sudut kanan dropdown.
  3. Dari "Mendapatkan Token" dropdown pilih Halaman Fan anda.
  4. Klik pada tombol submit untuk menghasilkan token.
  5. Dari sisi kiri pada "Pencarian untuk lapangan" masukkan access_token dan klik submit lagi. Copy token ini dari jendela utama.
  6. Buka https://developers.facebook.com/tools/debug/accesstoken dan paste token di sini. Klik "Debug".
  7. Klik tombol "Memperluas Akses Token". Ini akan menghasilkan tidak pernah berakhir token.
Komentar (4)

Ini adalah kode yang saya gunakan untuk menghasilkan "Tidak" berakhir akses token menggunakan PHP SDK:

$facebook = new \Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.10',
  'default_access_token' => '{access-token}'
]);

// Exchange token
$token = $facebook->post('/oauth/access_token',
    array(  
        'grant_type' => 'fb_exchange_token',           
        'client_id' => 'APP ID',
        'client_secret' => 'APP Secret',
        'fb_exchange_token' => 'access Token'
    )
);
$token = $token->getDecodedBody();
$token = $token['access_token'];

echo $token;

Saya echo access token dan kemudian debug menggunakan akses token debugger. Hasilnya harus: Berakhir: tidak Pernah.

Referensi dan Dokumentasi:

Komentar (5)
Larutan
  1. Menghasilkan berumur panjang token untuk admin dari fan page http://appdevresources.blogspot.sg/2012/11/extend-facebook-access-token-make-it.html (bagus penjelasan dengan gambar)
  2. Menghasilkan berumur panjang token fan page sendiri http://appdevresources.blogspot.sg/2012/11/retrieving-facebook-page-id-and.html
  3. Menggunakan token dari 2) untuk posting di fan page's dinding (tidak perlu untuk Facebook Login dialog)
  4. Menghasilkan token tidak akan pernah berakhir (bahkan jika administrator fan page melakukan log out)
Komentar (3)

Anda dapat menggunakan api berikut dari facebook untuk me-refresh token hidup untuk 60 hari dan hanya ketika tanda akan berakhir, panggilan yang sama api lagi dengan-dalam 60 hari untuk menyegarkan kembali kehidupan untuk 60 hari dari titik waktu Token berakhir hadir dalam berakhir parameter dan nilainya dalam hitungan detik

Mengganti CLIENT_ID dan CLIENT_SECRET dengan nilai mereka yang sebenarnya

https://graph.facebook.com/oauth/access_token?client_id=
&client_secret=&grant_type=fb_exchange_token
&fb_exchange_token=

di ACCESS_TOKEN, menempatkan sebenarnya token nilai tanpa menambahkan "access_token="

Komentar (3)

It's November 2018 dan ini bekerja untuk saya!


<?php
$args=[
    'usertoken'=>'xxx',
    'appid'=>'xxx',
    'appsecret'=>'xxx',
    'pageid'=>'xxx'
];
function generate_token($args){

$r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}
echo "https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}";
echo '<br><br>Permanent access token is: <input type="text" value="'.generate_token($args).'">
Komentar (2)
  1. Membuat sebuah aplikasi jika anda don't memiliki - https://developers.facebook.com/
  2. Membuat hidup pengguna akses token dalam Grafik Explorer - https://developers.facebook.com/tools/explorer/

Pilih aplikasi yang dibuat di atas dan pilih "pengguna Dapatkan akses token di drop down"

Di akses pengguna token pop up anda dapat memilih beberapa izin untuk token. Untuk yang non kadaluwarsa halaman akses token yang anda butuhkan untuk memilih "mempublikasikan halaman" dan "mengelola halaman"

  1. Membuat lama tinggal pengguna akses token

Pergi ke https://developers.facebook.com/tools/accesstoken/. Di sana anda akan menemukan berumur pendek user access token dan aplikasi access token dari semua aplikasi yang anda miliki

Tekan debug pilihan user access token dari aplikasi yang dibuat di atas. Ini akan membawa anda ke debug alat. Di mana anda dapat menemukan semua informasi singkat pengguna akses token.

Di bagian bawah ada pilihan untuk menghasilkan lama tinggal(60 hari) pengguna akses token untuk pendek ini tinggal pengguna akses token. Menghasilkan lama tinggal pengguna akses token dengan memilih "Memperluas Akses Token"

  1. Buat yang tidak pernah berakhir halaman akses token

a. Pergi ke Graph Explorer - https://developers.facebook.com/tools/explorer/.

b. Paste yang lama tinggal pengguna akses token yang dihasilkan pada langkah sebelumnya dalam "Akses token" lapangan.

c. Akses "/saya?bidang=access_token" api . Ini akan menghasilkan halaman akses token dan halaman yang berhubungan dengan mereka. Halaman ini akses token tidak akan pernah berakhir(sampai pengguna mengubah password/user mencabut aplikasi)

  1. Verifikasi non kadaluwarsa halaman akses token

a. Pergi ke https://developers.facebook.com/tools/debug/accesstoken/

b. Tambahkan halaman akses token yang diambil dari atas masuk ke "Access token" lapangan dan debug

Anda akan mendapatkan berakhir seperti yang Pernah

Ditemukan di sini dengan sedikit perubahan: https://medium.com/@Jenananthan/how-to-create-non-expiry-facebook-page-token-6505c642d0b1

Komentar (1)

Jawaban yang diterima tidak lagi benar. Ini bekerja sekarang.

Open graph Explorer: https://developers.facebook.com

  • Login dan pilih aplikasi anda dari sudut kanan dropdown
  • Setelah login klik Tools & Dukungan ikon di pojok kanan atas
  • Kemudian pilih Access Token Alat link di sisi kanan bawah aplikasi nama

Di sebelah kanan ditampilkan pengguna token > klik [Debug] tombol

Ini akan membawa anda untuk Akses Token Debugger

  • Klik tombol biru di bagian bawah yang bertuliskan Memperluas Akses Token
  • Ini akan mengatakan: Ini baru berumur panjang access token tidak akan pernah berakhir
  • Copy dan paste token tersebut ke dalam aplikasi anda yaitu; EAAYMFDuobYUBADtYjVDukwBGpwPHOCY0iyglyy3j3r200mzybzb4.....
Komentar (1)

Anda perlu untuk mendapatkan user access token FB.login() dengan manage_pages, pages_show_list dan lain-lain dalam lingkup perizinan. Kemudian, jalankan FB.api("/{user-aplikasi-id}/akun", bidang: ...) untuk mendapatkan sebuah daftar dari halaman-halaman mereka masing-masing info, termasuk access_token. Di sini, anda mendapatkan dalam waktu singkat-token, tapi dengan token ini anda dapat memperpanjang waktu kedaluwarsa untuk "Tidak".

FB.login(function (response){
  if(response.status!=="connected"){
    return;
  }        
  FB.api('/'+USER_APP_ID+'/accounts',{fields: 'id, name, access_token,category, picture'}, 
   function(d){
    console.log(d) // Here you get access_token (short-lived-token)
  });
},{scope: 'manage_pages, pages_show_list', auth_type: 'rerequest'});

Dengan akses token dan dari sisi server, anda dapat membuat panggilan ke API Grafik, menggunakan App ID dan App Secret dari App yang anda gunakan untuk mendapatkan izin untuk mengelola halaman.

GET /oauth/access_token?  
grant_type=fb_exchange_token&           
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token} 

Respon memberi anda akses token dengan waktu kedaluwarsa di "Tidak".

Referensi: API Grafik Rekening, Tanggal kedaluwarsa dan Memperluas Akses Token

Komentar (0)

Metode di bawah ini bekerja untuk saya, jika anda menggunakan 4.x Facebook SDK:

  1. Buat Sementara Pengguna Akses Token untuk pertama kalinya menggunakan metode yang disebutkan di sini.
  2. Sekarang! It's waktu untuk mengkonversi token ini untuk Jangka Panjang Token menggunakan PHP SDK 4.x. Gunakan kode berikut seperti itu bekerja untuk saya:

//Kelas untuk Menghasilkan Lama Tinggal Token

<?php

namespace App\Lib;

use Facebook\FacebookApp;
use Facebook\FacebookClient;
use Facebook\Authentication\OAuth2Client;

class FacebookLongLivedTokenGenerator
{
    public $longLivedTokenGenerated = false;

    public function generateFacebookLongLivedToken($appId, $appSecret, $oldToken)
    {
        //request new access token
        $oauth2Fb = new OAuth2Client(new FacebookApp($appId, $appSecret), new FacebookClient());
        $longLivedToken = $oauth2Fb->getLongLivedAccessToken($oldToken);
        if ($longLivedToken) {
            $this->longLivedTokenGenerated = true;
            $this->userAccessToken = $longLivedToken;
        }
        return trim($this->userAccessToken);
    }
}

Anda dapat mengkonsumsi kelas atas seperti ini:

$longToken = new FacebookLongLivedTokenGenerator();
echo $longToken->generateFacebookLongLivedToken($appId, $appSecret, $oldUserAccessToken);
Komentar (0)

Menggunakan Facebook API v3.1 - Tidak ada jawaban di atas bekerja untuk saya. Sebaliknya, saya harus:

  1. Membuat "pengguna sistem"

  2. memberinya akses ke properti yang saya butuhkan (dalam kasus saya Aplikasi)

  3. Menghasilkan token baru untuk aplikasi tersebut dan pengguna sistem

Petunjuk yang saya digunakan dapat ditemukan di sini

Komentar (0)

ini Makefile bekerja sebagai 2015-10-29. langkah-langkah 2 dan 3 hanya memberikan dua bulan token, tapi halaman akses token yang diberikan pada langkah terakhir menunjukkan di debugger sebagai "Berakhir: tidak Pernah". jawaban ini mengacu pada pekerjaan dari beberapa orang lain, dan disediakan dalam harapan bahwa itu akan menyederhanakan hal-hal untuk pengembang terlepas dari pilihan bahasa pemrograman.

sebelum menggunakan ini, anda harus menempatkan anda ada di halaman ID, app ID, app secret, dalam rangka itu, di ~/.netrc file sebagai berikut: mesin graph.facebook.com login 123456 akun 234567 password 345678

juga sebelum menggunakan ini, login ke Facebook dengan w3m, klik "biarkan saya Tetap masuk".

MACHINE := graph.facebook.com
PAGE_ID := $(shell awk '$$2 ~ /^$(MACHINE)$$/ {print $$4}' $(HOME)/.netrc)
APP_ID := $(shell awk '$$2 ~ /^$(MACHINE)$$/ {print $$6}' $(HOME)/.netrc)
APP_SECRET := $(shell awk '$$2 ~ /^$(MACHINE)$$/ {print $$8}' $(HOME)/.netrc)
PERMISSIONS := manage_pages,publish_actions,publish_pages
FB := https://www.facebook.com
GRAPH := https://$(MACHINE)
CODE ?=
TOKEN ?=
TWOMONTHTOKEN ?=
BROWSER ?= w3m -dump
REDIRECT := http://jc.unternet.net/test.cgi
CLIENT_SIDE := $(FB)/dialog/oauth?client_id=$(APP_ID)&redirect_uri=$(REDIRECT)
CLIENT_SIDE := $(CLIENT_SIDE)&scope=$(PERMISSIONS)&response_type=code
SERVER_SIDE := $(GRAPH)/oauth/access_token?client_id=$(APP_ID)
SERVER_SIDE := $(SERVER_SIDE)&redirect_uri=$(REDIRECT)
SERVER_SIDE := $(SERVER_SIDE)&client_secret=$(APP_SECRET)&code=$(CODE)
LONG_LIVED := $(GRAPH)/oauth/access_token?client_id=$(APP_ID)
LONG_LIVED := $(LONG_LIVED)&client_secret=$(APP_SECRET)
LONG_LIVED := $(LONG_LIVED)&grant_type=fb_exchange_token
LONG_LIVED := $(LONG_LIVED)&fb_exchange_token=$(TOKEN)
ACCOUNTS := $(GRAPH)/me/accounts?access_token=$(TWOMONTHTOKEN)
export
env:
    env
    @echo Usage: make code
    @echo '        ' make CODE=codefrompreviousstep token
    @echo '        ' make TOKEN=tokenfrompreviousstep longterm
    @echo '        ' make TWOMONTHTOKEN=tokenfrompreviousstep accounts
    @echo Then edit '$$HOME/.netrc' replacing password with page token
code:
    $(BROWSER) "$(CLIENT_SIDE)"
token:
    $(BROWSER) "$(SERVER_SIDE)"
longterm:
    $(BROWSER) "$(LONG_LIVED)"
accounts:
    $(BROWSER) $(ACCOUNTS)

ternyata dalam banyak kasus langkah pertama gagal dengan w3m. dalam kasus itu, instal browser lain seperti firefox; ssh -X ke server anda jika script remote host, dan menggunakan membuat BROWSER=firefox kode sebagai gantinya. berikut langkah-langkah yang harus bekerja dengan w3m seperti yang ditunjukkan.

catatan: jika memotong-dan-paste ini Makefile, pastikan untuk mengganti 4-ruang lekukan dengan tepat tab.

Komentar (0)

podrias intentar algo como esto

`` Administrar Paginas url

<script type="text/javascript"> fungsi token_live(){ var token_app = ""; $.ajax({ url: "https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id=598062314053459&client_secret='client_secret'&fb_exchange_token=access_token", jenis: 'POST', dataType: 'HTML', data: {api_public: 'AP-42b3a8aab70', }, }) .dilakukan(function(data) {

var txt = data var obj = JSON.mengurai(txt);

var token_live = obj.access_token

var url_infinit = "https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id=&#39;remplaza_cliente_id&#39;&client_secret=&#39;client_secret&#39;&fb_exchange_token="+token_live;

alert(url_infinit);

``

Komentar (0)