life - facebook lite
Generar token de acceso "no caducar" para la página de Facebook (9)
- Crea una aplicación si no tienes - https://developers.facebook.com/
- Cree un token de acceso de usuario de corta vida en Graph Explorer - https://developers.facebook.com/tools/explorer/
Seleccione su aplicación creada arriba y seleccione "Obtener token de acceso de usuario en el menú desplegable"
En la ventana emergente del token de acceso de usuario, puede seleccionar algunos permisos para el token. Para un token de acceso a página sin vencimiento, debe seleccionar "publicar páginas" y "administrar páginas"
- Crear un token de acceso de usuario de larga duración
Vaya a https://developers.facebook.com/tools/accesstoken/ . Allí encontrará tokens de acceso de usuario de corta vida y token de acceso a la aplicación de todas las aplicaciones que tiene
Presione la opción de depuración del token de acceso de usuario de la aplicación creada anteriormente. Esto lo llevará a la herramienta de depuración. Donde puede encontrar toda la información del token de acceso de usuario de corta duración.
En la parte inferior hay una opción para generar un token de acceso de usuario de larga duración (60 días) para este token de acceso de usuario de corta duración. Genere token de acceso de usuario de larga duración seleccionando "Extender token de acceso"
- Crear token de acceso a la página nunca caducado
a. Vaya a Graph Explorer - https://developers.facebook.com/tools/explorer/ .
segundo. Pega el token de acceso de usuario de larga duración generado en el paso anterior dentro del campo "Token de acceso".
do. Acceda a la aplicación "/ me? Fields = access_token". Esto dará como resultado tokens de acceso a la página y páginas relacionadas con ellos. Estos tokens de acceso a la página nunca caducarán (hasta que el usuario cambie la contraseña / usuario revoque la aplicación)
- Verificar el token de acceso a la página sin caducidad
a. Vaya a https://developers.facebook.com/tools/debug/accesstoken/
segundo. Agregue el token de acceso a la página recuperado del paso anterior en el campo "token de acceso" y depure
Obtendrás vencer como Nunca
Se encuentra aquí con pequeños cambios: https://medium.com/@Jenananthan/how-to-create-non-expiry-facebook-page-token-6505c642d0b1
Logré publicar en la página de Facebook a través de la API (C #), pero cuando el administrador de la página cierra la sesión, aparece el siguiente error:
"(OAuthException - # 190) Error al validar el token de acceso: la sesión no es válida porque el usuario se desconectó".
¿Cómo genero un token de acceso que nunca expira?
Necesito una solución que no abra el diálogo de inicio de sesión de Facebook.
- Genera token de larga duración para el administrador de la página de fans http://appdevresources.blogspot.sg/2012/11/extend-facebook-access-token-make-it.html (buena explicación con imágenes)
- Genera token de larga duración para la propia página de fans http://appdevresources.blogspot.sg/2012/11/retrieving-facebook-page-id-and.html
- Use el token de 2) para publicar en el muro de la página del fan (no es necesario el diálogo de inicio de sesión de Facebook)
- El token resucitado nunca caducará (incluso si el administrador de la página de fans se desconectó)
El siguiente método funcionó para mí, si está utilizando 4.x
Facebook SDK:
- Cree el token de acceso de usuario temporal por primera vez utilizando el método mencionado here .
- ¡Ahora! Es hora de convertir este token en Token a Largo Plazo usando PHP SDK 4.x. Use el siguiente código ya que funcionó para mí:
//Class for Generating the Long Lived Token
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);
}
}
Puede consumir la clase anterior de esta manera:
$longToken = new FacebookLongLivedTokenGenerator();
echo $longToken->generateFacebookLongLivedToken($appId, $appSecret, $oldUserAccessToken);
Este es el código que utilizo para generar el token de acceso de expiración "Nunca" usando 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;
Me hago eco del token de acceso y luego lo depuro utilizando el depurador de tokens de acceso . El resultado debería ser: Expires: Never
.
Referencias de la documentación:
La respuesta aceptada ya no es correcta. Esto funciona ahora.
Abrir gráfico Explorer: https://developers.facebook.com/
- Inicie sesión y elija su aplicación desde el menú desplegable de la esquina derecha
- Una vez que haya iniciado sesión, haga clic en el ícono de Herramientas y Soporte en la esquina superior derecha
- A continuación, elija el enlace de Access Token Tool en el lado derecho debajo del nombre de su aplicación
A la derecha del token de usuario mostrado> haz clic en el botón [Depurar]
Esto lo habrá llevado al Depurador de tokens de acceso
- Haga clic en el botón azul en la parte inferior que dice Extender ficha de acceso
- Esto dirá: este nuevo token de acceso de larga duración nunca caducará.
- Copie y pegue ese token en su aplicación, es decir; EAAYMFDuobYUBADtYjVDukwBGpwPHOCY0iYglYY3j3r200MzyBZB4 .....
Necesita obtener un token de acceso de usuario por parte de FB.login () con manage_pages, pages_show_list y otros en los permisos de alcance. Luego, ejecute FB.api ("/ {user-app-id} / accounts", fields: ...) para obtener una lista de páginas con su respectiva información, incluida access_token. Aquí obtienes un token de corta duración, pero con este token puedes extender su tiempo de caducidad a "Nunca".
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''});
Con el último token de acceso y desde el lado del servidor, realiza una llamada a API Graph, usando App ID y App Secret de la aplicación que utiliza para obtener permisos para administrar la página.
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
La respuesta le proporciona un token de acceso con fecha de caducidad en "Nunca".
Referencias: API Graph Accounts , Expiration y Extends Access Tokens
Puede generar token de acceso sin vencimiento sin codificación, siguiendo estas instrucciones:
- Abra el Explorador de gráficos: https://developers.facebook.com/tools/explorer/ .
- Elija su aplicación del menú desplegable de la esquina derecha.
- En el menú desplegable "Obtener un token", elige tu Página de fans.
- Haga clic en el botón enviar para generar token.
- Desde el lado izquierdo en "Buscar un campo", ingrese access_token y haga clic en enviar de nuevo. Copia este token desde la ventana principal.
- Abra https://developers.facebook.com/tools/debug/accesstoken y pegue el token aquí. Haga clic en "Depurar".
- Haga clic en el botón "Extender token de acceso". Esto generará un token que nunca expira.
Puede usar la siguiente API de Facebook para actualizar la vida útil de los tokens a 60 días y justo cuando el token está a punto de caducar, vuelva a llamar a la misma API con 60 días para actualizar su vida a 60 días a partir de ese momento Token expire es presente en el parámetro expira y su valor está en segundos
Reemplace CLIENT_ID y CLIENT_SECRET con su valor real
https://graph.facebook.com/oauth/access_token?client_id=<CLIENT_ID>
&client_secret=<CLIENT_SECRET>&grant_type=fb_exchange_token
&fb_exchange_token=<ACCESS_TOKEN>
en ACCESS_TOKEN, ingrese el valor real del token sin agregar "access_token ="
este Makefile funciona a partir del 2015-10-29. los pasos 2 y 3 dan solo un token de dos meses, pero el token de acceso a la página dado en el paso final se muestra en el debugger como "Caduca: nunca". esta respuesta se basa en el trabajo de varios otros, y se brinda con la esperanza de que simplifique las cosas para los desarrolladores independientemente del lenguaje de programación preferido.
antes de usar esto, debe poner su identificación de página, ID de aplicación y aplicación existentes en secreto, en ese orden, en su archivo ~ / .netrc de la siguiente manera: machine graph.facebook.com login 123456 account 234567 password 345678
también antes de usar esto, inicie sesión en Facebook con w3m, haga clic en "Mantenerme conectado".
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)
resulta que en muchos casos el primer paso falla con w3m. en ese caso, instale otro navegador como firefox; ssh -X
a su servidor si el script está alojado remotamente; y use make BROWSER=firefox code
lugar. los siguientes pasos deberían funcionar con w3m como se muestra.
Nota: si corta y pega este Makefile, asegúrese de reemplazar las sangrías de 4 espacios con pestañas correctas.