我的主页是facebook登录活动,将进入导航抽屉。一切正常但我每次打开应用程序时都需要登录。我试过做共享偏好和accessstoken。我不知道如何使用此代码。请告诉我。
这是我的Main.java
public class Main extends AppCompatActivity {
CallbackManager callbackManager;
LoginButton loginButton; //facebookLoginButton
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
loginButton = (LoginButton) findViewById(R.id.login_button);
assert loginButton != null;
loginButton.setReadPermissions("email");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult login_result) {
getUserInfo(login_result);
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
}
protected void getUserInfo(LoginResult login_result){
GraphRequest data_request = GraphRequest.newMeRequest(
login_result.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject json_object,
GraphResponse response) {
Intent intent = new Intent(Main.this,HomeActivity.class);
intent.putExtra("jsondata",json_object.toString());
startActivity(intent);
}
});
Bundle parameter = new Bundle();
parameter.putString("fields", "id,name,email,picture.width(150).height(150)");
data_request.setParameters(parameter);
data_request.executeAsync();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
Log.e("data", data.toString());
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
}
帮助。
答案 0 :(得分:4)
初始化变量
SharedPreferences sharedpreferences;
你的OnCreate()上的
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
保存您的数据
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("name", name);
editor.putString("phone", phone);
editor.commit();
获取共享首选项保存的数据
SharedPreferences settins = PreferenceManager
.getDefaultSharedPreferences(Youractivity.this);
String pref1=settings.getString("name", "anon");
String pref2=settings.getString("Phone", "anon");
答案 1 :(得分:0)
实际上,Facebook SDK存储了您需要的一切。例如,您可以通过检查null
的访问令牌来检查用户是否已登录。如果用户未登录,则AccessToken.getCurrentAccessToken()
会返回null
。而且您不需要存储个人资料信息,SDK已经执行此操作,例如通过调用Profile.getCurrentProfile()
您检索一些基本信息有关当前登录用户的信息。
答案 2 :(得分:0)
最好在保存和访问时命名共享首选项。这在多个共享首选项的情况下很有用。
在您要保存的活动上,键入:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref1", MODE_PRIVATE);
editor = pref.edit();
editor.putString("firstName",firstName);
editor.commit();
在您要访问的活动上,键入:
SharedPreferences prefs = getApplicationContext().getSharedPreferences("MyPref1", Context.MODE_PRIVATE);
String firstName = prefs.getString("firstName", "null");