【问题标题】:Android - Facebook Custom Story image not displayedAndroid - Facebook 自定义故事图片未显示
【发布时间】:2015-02-24 15:30:54
【问题描述】:

我在我的 Facebook 开发人员上为我的应用设置了一个自定义故事,我想使用 Android Facebook SDK 分享一个故事。使用该应用程序的调试版本,一切正常,但是当我使用我的发布密钥对其进行签名时,预览只会显示网站标题和 Facebook 应用程序图像,而不是“对象”标题和图像。 这是我的代码:

OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);

        OpenGraphObject ogobj = OpenGraphObject.Factory.createForPost("item");
        ogobj.setProperty("title", fb_data.getTitle());
        ogobj.setProperty("image", obj.getPhotos().get(0));

        ogobj.setProperty("description", fb_data.getDesc());
        ogobj.setProperty("url", fb_data.getUrl());

        List<Bitmap> shareImages = new ArrayList<Bitmap>();
        shareImages.add(arg0);

        action.setType("myapp:share");
        action.setProperty("item", ogobj);

        FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(Act_object.this, action, "item")
        .build();

        uiHelper.trackPendingDialogCall(shareDialog.present());

“分享”操作已获得 Facebook 批准。 如果我没有设置“url”属性,对话框(在签名的 apk 中)不会显示,logcat 会给我这个:

02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229): com.facebook.http.protocol.ApiException: [code] 100 [message]: (#100) conflicting og:type found in path (myapp:item) and 'properties' (item) [extra]: 
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:104)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:137)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:234)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:185)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.JsonResponseHandler.a(JsonResponseHandler.java:34)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseHandler.b(ApiResponseHandler.java:91)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.java:54)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.java:29)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:738)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:214)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:167)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:323)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:550)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.SingleMethodRunnerImpl.b(SingleMethodRunnerImpl.java:257)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:20)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.platform.common.server.SimplePlatformOperation.a(SimplePlatformOperation.java:39)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.platform.common.server.PlatformOperationHandler.a(PlatformOperationHandler.java:59)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.java:376)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:62)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:293)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:60)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at android.os.Handler.handleCallback(Handler.java:739)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at android.os.Handler.dispatchMessage(Handler.java:95)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at android.os.Looper.loop(Looper.java:135)
02-24 16:29:21.129: W/fb4a(:<default>):BlueServiceQueue(9229):  at android.os.HandlerThread.run(HandlerThread.java:61)

真的不明白我做错了什么...... 提前致谢

编辑: 这是我的新代码,现在我可以将图像放在我的故事中

        OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);

        OpenGraphObject ogobj = OpenGraphObject.Factory.createForPost("myapp:item"); 

        ogobj.setTitle(fb_data.getTitle());
        ogobj.setProperty("name", fb_data.getTitle());
        ogobj.setImageUrls(Arrays.asList(obj.getPhotos().get(0)));
        ogobj.setUrl(fb_data.getUrl());
        ogobj.setProperty("user_generated", "true");

        List<Bitmap> shareImages = new ArrayList<Bitmap>();
        shareImages.add(arg0);

        action.setType("myapp:share");          
        action.setProperty("name", fb_data.getTitle());
        action.setProperty("title", fb_data.getTitle());
        action.setProperty("image", obj.getPhotos().get(0));
        action.setProperty("item", ogobj);

        FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(Act_object.this, action, "item")
        .build();

        uiHelper.trackPendingDialogCall(shareDialog.present());

这是我在签名的 APK 中看到的:

相反,它应该是这样的(调试应用会发生这种情况)

Prova3 是名称 fb_data.getTitle(),图像是 obj.getPhotos().get(0)

【问题讨论】:

    标签: android facebook facebook-graph-api


    【解决方案1】:

    我想你想要

    OpenGraphObject ogobj = OpenGraphObject.Factory.createForPost("myapp:item"); 
    

    否则,您的操作会在“item”属性中查找“myapp:item”类型的对象,但您只是给它一个“item”类型的对象。

    【讨论】:

    • 不行,不行,还是不能显示我想放的标题
    • 你能张贴你看到的截图吗?
    • 我更新了我的问题并添加了一些图片(为隐私而修改)
    • 我假设您已将发布密钥哈希添加到您的应用设置中?您正在使用的“url”上是否有任何 OG 标签?最后,如果您删除“url”属性并使用 createForPost("myapp:item") 会发生什么?
    • 是的,我添加了我的发布密钥哈希(在我的应用程序中,我有一个 Facebook 登录,它在发布和调试时都可以正常工作)。当我在调试时删除“url”时它仍然有效(如第二张图片),在发布时它只显示“共享和项目”短语的 Facebook 对话框,没有对象图像或标题。
    猜你喜欢
    • 1970-01-01
    • 2020-02-02
    • 2016-07-04
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多