gpt4 book ai didi

java - 从另一个类调用 Facebook GraphRequest 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:09 25 4
gpt4 key购买 nike

我正在制作需要从 Facebook 获取数据的应用程序。为了避免重复代码,我决定为 GraphRequest 创建一个类。

public class FacebookRequest {
private static JSONObject object;

private FacebookRequest(JSONObject object) {
this.object = object;
}

private static JSONObject GraphApiRequest(String path, AccessToken token){
new GraphRequest(
token,
path,
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
object = response.getJSONObject();
}
}
).executeAsync();
return object;
}

public static JSONObject getGraphApi(String path, AccessToken token){
return GraphApiRequest(path, token);
}}

调用我使用的类

private static FacebookRequest fbRequest;
//....
JSONObject object= fbRequest.getGraphApi(path,token);

问题是 GraphApiRequest 方法总是返回 object=null 并且只有在执行请求之后。

我应该更改什么才能获得真正的随叫随到的对象?

编辑:感谢This answer

所以我找到了一个 object on call 的解决方案,但这不是完美的选择(甚至可能是错误的,因为我在编程方面不是很有经验,但它对我有用)

public class FacebookRequest {
private JSONObject object;

public FacebookRequest(String path, AccessToken token) {
new GraphRequest(
token,
path,
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
object = response.getJSONObject();
}
}
).executeAsync();
}
public JSONObject getObject(){
return object;
}
}

当我调用请求时它会在一段时间后执行

protected void onCreate(Bundle savedInstanceState) {
//...
FacebookRequest fbRequest = new FacebookRequest(path,token);
//...
}

我使用调用时获取实际对象。

JSONObject object = fbRequest.getObject();

如果我在创建构造函数之后立即调用 JSONObject,它仍然无法正常工作。我期待着改进这段代码,如果你能给我一些建议。

最佳答案

此处解释了您要查找的内容 (Facebook API how to wait til graphRequest executeAsync is done)。如您所问,在创建构造函数后立即使用它.executeAsyc() 替换为 .executeAndWait()

由于主线程卡住和糟糕的用户体验,不建议这样做。

关于java - 从另一个类调用 Facebook GraphRequest 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com