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 字段扩展的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用程序中的 Facebook 群聊

Facebook 登录在 Android 应用程序浏览器中的 Facebook 中不起作用

如何通过 android 中的 facebook 聊天应用程序传输图像?

android应用程序中的Facebook登录不起作用

Android 中的 AdMob Facebook 中介

将 ios 或 Android 应用程序中的图像设置为 Facebook 个人资料图片(使用 Facebook API)[重复]