Problemas al crear historiales de Open Graph: "no se puede generar la historia" y "no se genera la vista previa"

Tengo una aplicación en Facebook (lo llamaremos mygame ), conectado con un juego Android que estoy desarrollando. En esta aplicación para móviles, quiero dejar que los usuarios compartan sus partituras después de un partido. Para esto, he considerado el uso de historias, acciones y objetos Open Graph .

Lo primero que he hecho es crear una acción, "Play" y un objeto "Match", este con una propiedad entera llamada "score". Después de eso, he creado mi primera historia en la forma "Play a Match" usando el botón relativo "Add custom story".

Primer problema: todos los ejemplos generados no muestran una vista previa, en su lugar aparece un mensaje rojo, Unable to Generate Story . Introduzca aquí la descripción de la imagen

Este problema fue tratado previamente en Stackoverflow, y la causa estaba relacionada con el hecho de que " facebook no tiene ejemplos de la historia para procesar" . Eso no debería ser cierto en mi caso, porque si abro el buscador de objetos puedo ver dos objetos de Match generados automáticamente. ¿Facebook intenta generar historias de ejemplo de esos registros? Si no (o incluso cierto), ¿cuál es el problema?

Segundo problema SOLUCIÓN, VER RESPUESTAS: en Android, simplemente, no puedo probar esta historia debido a una excepción que dice com.facebook.FacebookException: Failed to generate preview for user. .

El método que he usado para mostrar un diálogo de Facebook con los detalles de esta "partida jugada" es el que se describe aquí: https://developers.facebook.com/docs/android/open-graph#sharedialog-setup

En mi aplicación, el código es el siguiente:

  OpenGraphObject setObj = OpenGraphObject.Factory.createForPost("mygame:match"); setObj.setProperty("score", set.getThisUserScore()); setObj.setProperty("title", set.getType().getDisplayString()); setObj.setProperty("url", "http://www.mygame.com"); setObj.setProperty("description", "Can you beat me?"); OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); action.setType("mygame:play"); action.setProperty("match", setObj); FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(activity, action, "match").build(); activity.getUiHelper().trackPendingDialogCall(shareDialog.present()); 

Una vez llamado, el cuadro de diálogo aparece en mi dispositivo, pero se cierra después de un segundo, lanzando la excepción.

Realmente no puedo concentrarme en dónde está el problema (estoy tratando de implementar la forma más sencilla de compartir historias). ¿Están conectados estos dos problemas?

    2 Solutions collect form web for “Problemas al crear historiales de Open Graph: "no se puede generar la historia" y "no se genera la vista previa"”

    Utilizo este código para publicar en la pared para las propiedades múltiples del objeto.

      private void publishPhoto(String imageURL) { Log.d("FACEBOOK", "Post to Facebook!"); try { JSONObject attachment = new JSONObject(); attachment.put("message",text); attachment.put("name", "MyGreatAndroidAppTest"); attachment.put("href", "http://stackoverflow.com/users/909317/sunny"); attachment.put("description","Test Test TEst"); JSONObject media = new JSONObject(); media.put("type", "image"); media.put("src", imageURL); media.put("href",imageURL); attachment.put("media", new JSONArray().put(media)); JSONObject properties = new JSONObject(); JSONObject prop1 = new JSONObject(); prop1.put("text", "Text or captionText to Post"); prop1.put("href", imageURL); properties.put(text, prop1); // u can make any number of prop object and put on "properties" for ex: //prop2,prop3 attachment.put("properties", properties); Log.d("FACEBOOK", attachment.toString()); Bundle params = new Bundle(); params.putString("attachment", attachment.toString()); facebook.dialog(MyProjectActivity.this, "stream.publish", params, new DialogListener() { @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub } @Override public void onError(DialogError e) { // TODO Auto-generated method stub } @Override public void onComplete(Bundle values) { final String postId = values.getString("post_id"); if (postId != null) { Log.d("FACEBOOK", "Dialog Success! post_id=" + postId); Toast.makeText(MyProjectActivity.this, "Successfully shared on Facebook!", Toast.LENGTH_LONG).show(); } else { Log.d("FACEBOOK", "No wall post made"); } } @Override public void onCancel() { // TODO Auto-generated method stub } }); } catch (JSONException e) { Log.e("FACEBOOK", e.getLocalizedMessage(), e); } 

    }

    He resuelto el segundo problema con FacebookException ! Hay una línea equivocada:

     setObj.setProperty("score", set.getThisUserScore()); 

    Al ser "puntuación" una propiedad personalizada, la línea debe ser reemplazada por:

     setObj.getData().setProperty("score", set.getThisUserScore()); 

    Tenga en cuenta que tuve que buscar profundamente en la documentación para encontrar esto …

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.