java - 与 Facebook 的连接正常,但是当我回到 MainActivity 时我丢失了数据
问题描述
我要开发一个 android 应用程序,我正在尝试分离事物....我创建了一个 FacebookConnect 类来调用 facebook API 以检索 facebook 公共信息以供以后使用,但是当我回来时我的对象为空到我的主要 Java 类。
任何想法......我的知识在这个技能领域是平均的。
这是我在 FacebookConnect 中的功能
public void getConnectionWithFacebook(Activity myActivity, CallbackManager mCallbackManager){
MCALLBACKMANAGER = mCallbackManager;
MYACTIVITY = myActivity;
ONEUSER = new User();
LoginManager.getInstance().logInWithReadPermissions(MYACTIVITY, Arrays.asList("email", "public_profile"));
LoginManager.getInstance().registerCallback(MCALLBACKMANAGER, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d(TAG,"facebookSuccess3 -> " + loginResult.toString());
// App code
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.d(TAG,"facebookSuccess4 -> " + response.toString());
getDataFromFacebook(object);
}
});
Bundle parameters = new Bundle();
parameters.putString("fields","id,email,first_name,last_name");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Log.d(TAG,"facebook -> " + "onCancel");
Toast.makeText(MYACTIVITY, "Une erreur s'est produite, veuillez réessayer plus tard...", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException error) {
Log.d(TAG,"facebookONError -> " +error.toString());
Toast.makeText(MYACTIVITY, "Une erreur s'est produite, veuillez réessayer plus tard...", Toast.LENGTH_LONG).show();
// ...
}
});
}
在我的主类中,我将在这个点击事件中调用这个函数:
btnFBLogin.setOnClickListener(new View.OnClickListener() {
FacebookConnect oneConnection = new FacebookConnect();
@Override
public void onClick(View v) {
btnFBLogin.setEnabled(false);
oneConnection.getConnectionWithFacebook(MainActivity.this, mCallbackManager);
String email = oneConnection.getEmail();
Log.d(TAG,"handleFacebookToken1 -> " + email); // doesnt work
}
});
不幸的是,结果为空或空,我不知道为什么。
编辑 :
这是我将数据从 facebook 关联到我的班级的功能:
public void getDataFromFacebook(JSONObject object) {
try{
String emailJSON = object.getString("email");
String fristNameJSON = object.getString("first_name");
String lastNameJSON = object.getString("last_name");
Log.d(TAGUSER,"facebookSuccess -> " + emailJSON);
Log.d(TAGUSER,"facebookSuccess -> " + fristNameJSON);
Log.d(TAGUSER,"facebookSuccess -> " + lastNameJSON);
//Log.d(TAGUSER,"facebookSuccess -> " + object.getString("email"));
// Log.d(TAGUSER,"facebookSuccess -> " + object.getString("first_name"));
//Log.d(TAGUSER,"facebookSuccess -> " + object.getString("last_name"));
this.setEmail(emailJSON);
this.setFirstName(fristNameJSON);
this.setLastName(lastNameJSON);
Log.d(TAGUSER,"facebookSuccess -> " + getEmail());
Log.d(TAGUSER,"facebookSuccess -> " + getFirstName());
Log.d(TAGUSER,"facebookSuccess -> " + getLastName());
} catch (JSONException e) {
e.printStackTrace();
}
}
我在每个地方都放了很多东西,看看数据会发生什么
再次感谢!
解决方案
推荐阅读
- python - 如何在 python Turtle 图形中检测 X(关闭)按钮?
- jquery - Search any content from div tag and show the searched div at top of all divs
- qt - How to make an item fill all available vertical space in QML?
- python - Xor multiple arrays in Python
- java - 插入后 SQL-Sever 表不更新
- c# - 错误 CS0117:“元帅”不包含“GetTypeFromCLSID”的定义
- android - 如何在更改其(行项目的)选择器(选定项目的背景等)后恢复列表视图行项目的默认效果?
- javascript - 使用带有 ejs 视图的 node.js 从 JSON 获取所有图像
- android - Flutter Could not prepare to run the isolate
- javascript - async/await:分批解析 Promise.all() N