Android 应用中的 Facebook Graph API 字段扩展

Posted

技术标签:

【中文标题】Android 应用中的 Facebook Graph API 字段扩展【英文标题】:Facebook Graph API field expansion in Android app 【发布时间】:2013-01-29 02:04:12 【问题描述】:

Facebook 的 android SDK 是否支持字段扩展?在哪里可以找到示例?

关于 Graph APi 的字段扩展有很好的文档。但是,我找不到 android-sdk-3 的任何文档。支持吗?

当您想要执行以下操作时,问题就开始了:

/me?fields=name,birthday,photos.limit(10).fields(id, picture)

在 Facebook android SDK 中,将参数添加为字符串似乎不起作用

例如

request = Request.newGraphpathRequest(session, "me/friendlists", new Request.Callback() 
    public void onCompleted(Response response) ...

Bundle parameters = new Bundle();
parameters.putString("fields","members.fields(id)", "list_type");
request.setParameters(parameters);

【问题讨论】:

【参考方案1】:
Session session = Session.getActiveSession();
    Bundle parameters = new Bundle(); 
    parameters.putString("fields","picture,description,source"); 
    new Request(session, /me/videos/uploaded, parameters, HttpMethod.GET,
            new Request.Callback() 
                public void onCompleted(Response response) 
                    GraphObject responseGraphObject = response
                            .getGraphObject();
                    JSONObject json = responseGraphObject
                            .getInnerJSONObject();
                    try 
                        JSONArray array = json.getJSONArray("data");
                        for (int i = 0; i < array.length(); i++) 
                            JSONObject main = array.getJSONObject(i);
                            String surce = main.optString("source");

                            String picture = main.optString("picture");

                            String videoname = main
                                    .optString("description");
                            System.out.println(surce);

                        
                     catch (JSONException e) 
                        e.printStackTrace();
                    
                
            ).executeAsync();

*通过graph api从faecbook获取视频数据,并将字符串放入bundle *

【讨论】:

这样的请求也可以正常工作:params.putString("fields", "birthday,email,gender,first_name,last_name,albums.limit(4)id,name");跨度> 【参考方案2】:

Android SDK 用于进行 Graph API 查询

您使用与对 graph.facebook.com 进行原始 HTTP 调用或使用 Graph API Explorer 工具时相同的参数和相同的返回值进行 API 调用 -

只需按照 Field Expansion 文档中的语法更改您对 API 的现有调用以包含您想要的其他字段,例如如果您当前正在调用/me/friends,您可以将其更改为/me/friends?fields=name,birthday

【讨论】:

确实@Igy,你可以按照你说的添加参数。但是当您想要执行以下操作时问题就开始了: > /me?fields=name,birthday,photos.limit(10).fields(id, picture) 在 Facebook android SDK 中似乎添加参数作为您提到的示例不起作用,因为您在照片中有字段扩展。

以上是关于Android 应用中的 Facebook Graph API 字段扩展的主要内容,如果未能解决你的问题,请参考以下文章