Android 试图访问facebook新闻源时,Graph对象返回null
我不熟悉Android编码,我正在尝试访问facebook新闻提要并在listview中显示。我在一个活动中使用facebook按钮小部件对用户进行身份验证,并将会话传递到下一个活动。会话被正确地传递,但当我尝试获取对GraphObject中的新闻提要和存储的请求的响应时,它返回null 这就是我所尝试的:Android 试图访问facebook新闻源时,Graph对象返回null,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我不熟悉Android编码,我正在尝试访问facebook新闻提要并在listview中显示。我在一个活动中使用facebook按钮小部件对用户进行身份验证,并将会话传递到下一个活动。会话被正确地传递,但当我尝试获取对GraphObject中的新闻提要和存储的请求的响应时,它返回null 这就是我所尝试的: new Request( userSession, "/me/home", null, Htt
new Request(
userSession,
"/me/home",
null,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
try
{
GraphObject newsFeed = response.getGraphObject();
JSONObject jsonObj=newsFeed.getInnerJSONObject();
JSONArray jsonArr = jsonObj.getJSONArray("data");
for(int i=0;i<jsonArr.length();i++)
{
JSONObject jsonObj1=jsonArr.getJSONObject(i);
strings.add(jsonObj1.getString("id"));
}
} catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
).executeAsync();
}
新请求(
用户会话,
“/我/家”,
无效的
HttpMethod.GET,
新的Request.Callback(){
未完成公共无效(响应){
尝试
{
GraphObject newsFeed=response.getGraphObject();
JSONObject jsonObj=newsFeed.getInnerJSONObject();
JSONArray jsonArr=jsonObj.getJSONArray(“数据”);
对于(int i=0;i确保:
1。您已经使用OpenSSL正确生成了应用程序id,并在应用程序清单中声明了它
2.在您的Facebook应用程序详细信息页面上正确输入应用程序包名称和应用程序id
3.您已申请相关权限,并已从FB处收到
4.访问令牌有效(即非空)
5。访问令牌的会话状态已打开。有时是不推荐的参数传入GraphRequest的问题,因此要找到它,请将facebook错误检查代码写入GraphRequest。在这里,我编写了名为MakeMerRequest(Accesstoken AccessTok)的完整方法,这里的访问令牌是由facebook提供的,因此您必须在调用此方法时传入它。下面是此方法的代码
private void makeMeRequest(AccessToken accesstoken) {
GraphRequest request = GraphRequest.newMeRequest(accesstoken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
FacebookRequestError facebookRequestError = response.getError();
if (facebookRequestError != null) {
Log.e("Error", facebookRequestError + "");
}
try {
System.out.println("GraphRequest response----" + object);
System.out.println("GraphRequest response----" + object.getString("name"));
System.out.println("GraphRequest response----" + object.getString("email"));
} catch (Exception e) {
e.printStackTrace();
}
HashMap<String, String> fb_data = new HashMap<String, String>();
try {
fb_data.put("name", object.getString("name"));
} catch (Exception e) {
fb_data.put("name", "");
}
try {
fb_data.put("id", object.getString("id"));
} catch (Exception e) {
fb_data.put("id", "");
}
try {
fb_data.put("email", object.getString("email"));
} catch (Exception e) {
fb_data.put("email", "");
}
try {
fb_data.put("dob", object.getString("dob"));
} catch (Exception e) {
fb_data.put("dob", "");
}
pdialog.show();
if (fb_data.get("email").equalsIgnoreCase("") || fb_data.get("email") == null) {
checkSocialMedia("facebook", fb_data);
} else {
LoginProcess(fb_data, "facebook");
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "picture,id,name,link,email,gender,birthday,location,first_name,last_name");
request.setParameters(parameters);
request.executeAsync();
}
但是,如果错误是关于传入graph request对象的已弃用参数,则检查它是否已弃用,如果已弃用,则它将打印到facebook错误消息中,并且您必须将其从参数中删除…以下是方法MakeMerRequest()中graph request对象的代码
您只需要从中删除该参数
parameters.putString("fields", "picture,id,name,link,email,gender,birthday,location,first_name,last_name");
您的fb登录集成工作正常非常感谢您的回复,先生。错误是异步任务。我放置了一个单独的函数用于填充列表,并在获取JSON对象的内部调用。现在开始工作。先生,您是否可以在空闲时查看此问题。我已经按照您提到的所有内容进行了回答。
Bundle parameters = new Bundle();
parameters.putString("fields", "picture,id,name,link,email,gender,birthday,location,first_name,last_name");
request.setParameters(parameters);
request.executeAsync();
parameters.putString("fields", "picture,id,name,link,email,gender,birthday,location,first_name,last_name");