Facebook Android SDK Sesión openForPublish no crear una nueva sesión
En el SDK de Android de Facebook cuando llamo
Session tempSession = new Builder(this).build(); Session.setActiveSession(tempSession); tempSession.openForRead(new OpenRequest(this).setPermissions(FB_PERMISSIONS));
Se obtiene una sesión de FB y todo funciona como de costumbre. Pero cuando reemplazo Read
with Publish
. Es decir, sigue
- Sitios de búsqueda de API de Facebook Graph por categoría
- No se puede obtener la ubicación y el correo electrónico mediante la API de Facebook
- Facebook Graph API: Obtener un azar N amigos?
- Cómo comprobar en el uso de facebook android sdk (api gráfico)
- No hacer fb como postId que acabo de compartir con éxito
Session tempSession = new Builder(this).build(); Session.setActiveSession(tempSession); tempSession.openForPublish(new OpenRequest(this).setPermissions(FB_PERMISSIONS));
Da un error diciendo, que la sesión está vacía, y no puede obtener los permisos de publicación a la sesión vacía.
¿Puede decir por qué es así y cuál sería la mejor manera de manejar esto?
- Solicitudes de juego en Facebook: Objeto que no pertenece a la aplicación
- ¿Cómo puedo integrar Facebook LoginButton en PreferenceScreen
- Android que abre la aplicación de Facebook en una publicación específica
- Android: ¿Cómo buscar o obtener la imagen específica de cualquier URl o LINK como Facebook?
- Obtener lista de amigos facebook 3.0
- Crear una solicitud en Facebook SDK 4 (Android)
- Error de carga de video de Android Facebook con la API de Android 4+
- Parse SDK Android - API de gráficos de Facebook v2.0
La respuesta corta es, no llame a openForPublish. Llame a openForRead y, a continuación, soliciteNewPublishPermissions más tarde si necesita permisos de publicación.
La respuesta larga es que no puede solicitar permisos de publicación (en un usuario que nunca ha estado conectado con Facebook antes a través de su aplicación) a menos que ya tenga permisos básicos o predeterminados (lo que obtendría si llamara a openForRead con un conjunto de permisos vacío) . Así que openForPublish maneja un caso de uso de nicho muy específico que la mayoría de las aplicaciones probablemente no tienen.
Me tomó un tiempo para resolver esto para que un usuario puede hacer clic en un botón para compartir uno de mis productos en Facebook en un feed. No quería que se les pidiera que firmar en hasta que realmente quería compartir, por lo que realmente sólo quería publicar permiso. La siguiente pila de la solicitud inicial de inicio de sesión / permiso de lectura con la solicitud de permiso de publicación. Esto le pedirá dos veces a los usuarios, primero para leer, luego para publicar, pero eso es necesario ahora independientemente de la solución:
Session session = Session.getActiveSession(); if (session == null) { session = new Session.Builder(this).setApplicationId("<APP ID HERE>").build(); Session.setActiveSession(session); session.addCallback(new StatusCallback() { public void call(Session session, SessionState state, Exception exception) { if (state == SessionState.OPENED) { Session.OpenRequest openRequest = new Session.OpenRequest(FacebookActivity.this); openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); session.requestNewPublishPermissions( new Session.NewPermissionsRequest(FacebookActivity.this, PERMISSIONS)); } else if (state == SessionState.OPENED_TOKEN_UPDATED) { publishSomething(); } else if (state == SessionState.CLOSED_LOGIN_FAILED) { session.closeAndClearTokenInformation(); // Possibly finish the activity } else if (state == SessionState.CLOSED) { session.close(); // Possibly finish the activity } }}); } if (!session.isOpened()) { Session.OpenRequest openRequest = new Session.OpenRequest(this); openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); session.openForRead(openRequest); } else publishSomething();
- Android.accounts.AuthenticatorException: error de enlace
- LinearLayout con divisores en pre Honeycomb