【问题标题】:Android Facebook Open Graph?Android Facebook 开放图谱?
【发布时间】:2012-04-01 18:05:12
【问题描述】:

我很好奇是否可以在 Open Graph 方面获得一些帮助,因为我似乎无法从已阅读的 Facebook API 中获得任何意义。

现在我已经在 Facebook 上设置了我的 Open Graph 应用程序。它已被批准。我正在尝试通过捆绑参数提交我的“对象”,但我很好奇如何设置捆绑参数对象,如下所示。其中 myObject 有多个与之关联的值。

Bundle params = new Bundle();
param.putString("myObject", ""); // My object has multiple values

我想我真的需要弄清楚你如何在 Bundle 中提交具有多个关联属性的东西。如果有人对此有任何见解,请帮助我。

起初我尝试过这样的事情。

Bundle myObject = new Bundle();
myObject("property1", "property1Value");
myObject("property2", "property2Value");
myObject("property3", "property3Value");
Bundle params = new Bundle();
params.putString("myObject", myObject); 

但事后我想通了为什么这行不通。

编辑 1

也许这会带来一些启示。请记住,这是一个不属于 Graph API 的 Open Graph 操作。

//Build recipe
JSONObject recipe = new JSONObject();
recipe.put("type", "myappns:recipe");
recipe.put("recipe_name", "Thai Island");
recipe.put("cook_time", "1hr. 30min.");

//Build cookbook
JSONObject cookbookParams = new JSONObject();
cookbookParams.put("type", "myappns:book");
cookbookParams.put("title", "Hot & Spicy");
cookbookParams.put("description", "This book consists of hot & spicy foods");
cookbookParams.put("recipes", new JSONArray().put(recipe));


Bundle params = new Bundle();
params.putString("cookbook", cookbookParams.toString());
AsyncFacebookRunner request = new AsyncFacebookRunner(facebook);
request.request("me/myappns:used", params, "POST", new addToTimelineListener(), null);

这是一个问题,因为我一直在深入研究 Open Graph 系统。我相信我实际上需要在某个地方设置一个网站,这是正确的吗?通过 Open Graph 的介绍性文档,我相信我可以在 Android 上创建和使用我的 Facebook 应用程序,而无需任何网站。那就是使用 Open Graph 系统,我知道我可以使用该应用程序发布提要以及我没有成功完成的内容。

再次感谢!

编辑 2

甚至不用担心回复我知道我现在的问题是什么......我必须在某个地方拥有一个托管 Facebook 应用程序的网站,以便帖子也可以链接回来。完全有道理,我还没有看到文档在哪里对此非常直接......哦,现在我知道了。

【问题讨论】:

    标签: android facebook facebook-opengraph


    【解决方案1】:

    我使用此代码在墙上发布多个对象属性。

         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);
        }
    }
    

    【讨论】:

    • 好的,我认为这是有效的,但我收到以下错误,任何建议:{"error":{"message":"(#3503) \"{\"property1\":\ "property2\",\"property3\":\"property4\"}\" 是类型为 \"Reference\"","type":"OAuthException","code" 的属性 \"myObject\" 的无效值:3503}}
    • 好吧,我显然只是错误地格式化了我的数据,Open Graph 太混乱了,没有适用于 Android 的示例。我将接受您的回答,然后发布我如何将 Open Graph 与此结合,一旦我得到它。
    • Sunny 我仍然有这个问题你有什么见解吗?我仍然遇到上述相同的错误。
    • @NagarjunaReddy 请提出一个单独的问题,我会回答。
    【解决方案2】:

    要查看完整示例,请查看wishlist example

    包含一个完整的 Android 示例。该软件包包括要上传到服务器的文件和一个说明如何在打开的图形面板上设置所有内容的自述文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多