gpt4 book ai didi

java - Facebook SDK 电子邮件和性别在 android 中被赋予 Null

转载 作者:行者123 更新时间:2023-12-01 09:54:36 25 4
gpt4 key购买 nike

亲爱的开发者,我正在尝试从 Facebook 保存数据,我正在获取其他所有数据,但无法获取电子邮件和性别。

这是我的代码

loginButton.setReadPermissions("public_profile");
loginButton.setReadPermissions("email");
loginButton.setReadPermissions("user_friends");


loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
if (response != null) {
try {
email = object.getString("email");
} catch (JSONException e) {
e.printStackTrace();
}
try {
gender = object.getString("gender");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "email,gender");
request.setParameters(parameters);
request.executeAsync();


Profile profile = Profile.getCurrentProfile();

userid = profile.getId();
userfirstname = profile.getFirstName();
middlename = profile.getMiddleName();
userlastname = profile.getLastName();
userimage = profile.getProfilePictureUri(30, 40);
linkuri = profile.getLinkUri();
name = profile.getName();




new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
WebService ws = new WebService(URL);
Map<String, String> data = new HashMap<String, String>();
data.put("user_fb_id", userid);
data.put("first_name", userfirstname);
data.put("middle_name", userfirstname);
data.put("gender", gender);
data.put("email", email);
data.put("last_name", userfirstname);
data.put("user_fb_profile_name", name);
data.put("fb_profile_pic", userimage.toString());


try {
String response = ws.makeHTTPRequest(data, "POST");
JSONObject jsonObject = new JSONObject(response);
Log.e("Response", jsonObject.toString());

} catch (Exception e) {
Log.d("", "Exception : " + e.getMessage());
}
return null;
}
}.execute();

}

@Override
public void onCancel() {
//info = ("Login attempt canceled.");
}

@Override
public void onError(FacebookException e) {
// info = ("Login attempt failed.");
}
});

现在我会让你知道我上面的代码有什么错误。

当我运行GraphRequest时,它将成功执行,但没有收到电子邮件和性别。电子邮件和性别等于 null 在 GrapRequest 方法之后,我运行 AsyncTask 并在我的网络服务课后发送该数据,我的类(class)给我空电子邮件和性别的错误但是当我在执行 AsyncTask 后将电子邮件和性别悬停时,他们拥有该数据,请帮助我如何解决该问题。

我想要什么,我想存储用户基本数据,如果有其他方法也让我知道我会尝试。

最佳答案

出现此问题是因为在您的代码中两个 Asynctask 同时运行。意味着 GraphRequest 类还运行 asynctask 来获取用户数据,并且您还运行 async 来将用户数据发送到服务器。

异步任务始终在单独的线程上运行(而不是在主线程上),并且它们不等待其他任务的完成。

所以解决方案是在 onCompleted() 方法中调用异步任务。喜欢..

编写此异步类,用于在 registerCallback 之外将数据上传到服务器。

private class Upload_Data extends AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
WebService ws = new WebService(URL);
Map<String, String> data = new HashMap<String, String>();
data.put("user_fb_id", userid);
data.put("first_name", userfirstname);
data.put("middle_name", userfirstname);
data.put("gender", gender);
data.put("email", email);
data.put("last_name", userfirstname);
data.put("user_fb_profile_name", name);
data.put("fb_profile_pic", userimage.toString());


try {
String response = ws.makeHTTPRequest(data, "POST");
JSONObject jsonObject = new JSONObject(response);
Log.e("Response", jsonObject.toString());

} catch (Exception e) {
Log.d("", "Exception : " + e.getMessage());
}
return null;
}
}

然后在获取电子邮件和性别值后在 onCompleted 方法中调用此异步类,并在调用 Asynctask 类之前检查电子邮件和性别不为空。

@Override
public void onCompleted(JSONObject object,GraphResponse response) {
if (response != null) {
try {
email = object.getString("email");
} catch (JSONException e) {
e.printStackTrace();
}
try {
gender = object.getString("gender");
} catch (JSONException e) {
e.printStackTrace();
}
}
if(email!=null && gender!=null){
new Upload_Data().execute();
}
}
});

希望这会有所帮助。

关于java - Facebook SDK 电子邮件和性别在 android 中被赋予 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344630/

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