ANDROID FACEBOOK SDK-4.0:当我在 GraphRequest.newGraphPathRequest 中使用“/me?fields=age_range”时出现错误

Posted

技术标签:

【中文标题】ANDROID FACEBOOK SDK-4.0:当我在 GraphRequest.newGraphPathRequest 中使用“/me?fields=age_range”时出现错误【英文标题】:ANDROID FACEBOOK SDK-4.0: I get an error when i use "/me?fields=age_range" in my GraphRequest.newGraphPathRequest 【发布时间】:2015-05-07 15:37:42 【问题描述】:
    我需要从 facebook 获取 age_range。 当我在我的GraphRequest.newGraphpathRequest 中使用/me?fields=age_range 时,我得到一个错误。 错误是graphObject 返回null。我试过使用/me,它可以正常工作,但我使用/me?fields=age_range 时得到了正确的用户数据。

测试:响应:responseCode:400,graphObject:null,错误:HttpStatus:400,errorCode:2500,errorType:OAuthException,errorMessage:必须使用活动访问令牌来查询有关当前用户的信息。


这是我一直在尝试修复的代码。

         GraphRequest request = GraphRequest.newGraphPathRequest(accessToken,
                        "/me?fields=age_range",
                        new GraphRequest.Callback() 
                            @Override
                            public void onCompleted(GraphResponse graphResponse) 

                                Log.v("Testing", graphResponse.toString());


                            
                        );
                request.executeAsync();

【问题讨论】:

您从哪里获得AccessToken?用户是否实际登录,您的 Facebook 应用是否获得 Facebook 批准? 【参考方案1】:

您不应将“/me?fields=age_range”作为 GraphRequest 中的路径。

改为只使用“/me”作为路径,然后新建一个Bundle,将“fields”作为key,将“age_range”作为字符串值,并将新的bundle作为参数设置在GraphRequest。

GraphRequest request = ...
...
Bundle params = new Bundle();
params.putString("fields", "age_range");
request.setParameters(params);
request.executeAsync();
...

【讨论】:

也为我工作。我正在使用 Xamarin 进行开发。谢谢。

以上是关于ANDROID FACEBOOK SDK-4.0:当我在 GraphRequest.newGraphPathRequest 中使用“/me?fields=age_range”时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

Android Facebook SDK 4.0 ShareDialog 不显示长文本

facebook android sdk 4.0,从 LoginManager 注销回调的方法

以编程方式清除 Android 上的 Facebook SDK 4.0 会话

任何示例显示如何使用自己的按钮或 Facebook 按钮在 Android 中使用 Facebook SDK 4.0 登录?

从我的应用程序中注销(使用 facebook android sdk 4.0 开发)并安装 facebook 原生应用程序

如何在 Facebook Android sdk 4.0 中使用 Graph Request 获取登录用户的电子邮件地址