Facebook SDK 4.x Android Publicar como página de Facebook

Ok, ya he descubierto este ya, pero quería ponerlo por ahí en caso de que alguien más se está ejecutando en los problemas. Básicamente, lo que tenía que hacer era publicar como página de usuario de Facebook (es decir, yo soy John Doe y soy un administrador de la página Rum Ham, quiero publicar en la página Rum Ham).

Así que, básicamente, la respuesta se ve así

Primero, necesitas registrar al usuario con esta línea

LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions", "manage_pages", "publish_pages")); 

A continuación, debe obtener el token de acceso de la página que desea publicar en

  Bundle params = new Bundle(); //ok so access token here is "app_ID|app_secret" params.putString("access_token", accessToken); params.putString("fields", "id"); GraphRequest request = new GraphRequest(null, "me", params, HttpMethod.GET, new GraphRequest.Callback() { public void onCompleted(GraphResponse response) { FacebookRequestError error = response.getError(); if (error != null) { Log.e("Error", error.getErrorMessage()); } else { JSONObject values = response.getJSONObject(); try { //so I have to get the user ID first String id = values.getString("id"); Bundle p = new Bundle(); p.putString("access_token", accessToken); //yay nest the graph requests //once we get the id we can get their pages GraphRequest pagesRequest = new GraphRequest(null, "/" + id + "/accounts", p, HttpMethod.GET, new GraphRequest.Callback() { public void onCompleted(GraphResponse response) { FacebookRequestError error = response.getError(); if (error != null) { Log.e("Error", error.getErrorMessage()); } else { //ok so here, we're getting the pages back in a few JSON wrappers JSONObject values = response.getJSONObject(); JSONArray array = null; try { array = values.getJSONArray("data"); //ok, so here we're just iterating through the pages a user has, obviously you can handle this accordingly.. for (int i = 0; i < array.length(); i++) { //ok, here's how to actually get the token String access_token = array.getJSONObject(i).getString("access_token") } } catch (JSONException e) { e.printStackTrace(); } } } }); GraphRequest.executeAndWait(pagesRequest); } catch (Exception e) { e.printStackTrace(); } } } }); GraphRequest.executeAndWait(request); } 

Ok, así que una vez que tengamos la página de token de acceso, aquí es donde entra en juego el real kery que Facebook se niega a contarle en sus páginas de referencia. Por lo tanto, olvídese de cualquier cosa que haya leído sobre la necesidad de enviar su aplicación para su revisión con ellos. Todo lo que tenía que hacer era crear un nuevo token de acceso así.

 //create a new access token, facebook refers to this as a page access token AccessToken token = new AccessToken("page_access_token", AccessToken.getCurrentAccessToken().getUserId(), Arrays.asList("publish_actions", "manage_pages", "publish_pages"), null, AccessTokenSource.FACEBOOK_APPLICATION_SERVICE, AccessToken.getCurrentAccessToken().getExpires(), AccessToken.getCurrentAccessToken().getLastRefresh()); //then we simply update our current access token AccessToken.setCurrentAccessToken(token); 

Ahora, todavía no hemos terminado. Finalmente, necesitamos hacer la llamada a la API para crear la publicación:

  Bundle params = new Bundle(); params.putString("message", "Contents of message"); //here, token is our newly created AccessToken object GraphRequest request = new GraphRequest(token, "/pageid/feed", params, HttpMethod.POST, new GraphRequest.Callback() { public void onCompleted(GraphResponse response) { FacebookRequestError error = response.getError(); if (error != null) { Log.e("Error", error.getErrorMessage()); } else { //do your own processing here for success } } }); GraphRequest.executeAndWait(request); } } 

Y eso es más o menos. Espero que esto ayude a alguien!

  • No se puede construir el proyecto de biblioteca Bintray Gradle - ClassNotFoundException
  • Cómo mostrar el indicador de pestaña en la parte superior de las pestañas
  • ¿Cómo puedo coordinar dos tareas de fondo?
  • Error al invalidar el método toString
  • Pruebas de unidad de Android: cómo probar un servicio mediante ServiceTestCase
  • StringBuilder perdió datos al convertir a String
  • Cómo devolver anonymous Lista o ArrayList en AsyncTask en Android
  • Cuenca en Opencv Android
  • IntelliJ / Android -> "java: se requiere expresión constante" en el caso R.id.viewId
  • Android Studio - Problema en build.gradle uncaught error de traducción ExecutionException OutOfMemory
  • ObtenidoStyledAttributes anotado con @StyleableRes. Suprimir advertencias
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.