检查用户是不是已登录 Facebook
Posted
技术标签:
【中文标题】检查用户是不是已登录 Facebook【英文标题】:Check if user is already logged in to Facebook检查用户是否已登录 Facebook 【发布时间】:2015-05-30 18:58:25 【问题描述】:如果用户已经使用 Facebook 登录,有没有一种方法可以跳过登录类,直接进入 MainActivity?我似乎在 Facebook SDK 文档中找不到任何解决方案。我在下面添加了 Login 类和 SplashScreen 类。
现在我只有退出的选项,然后再次启动应用程序后在登录类中再次登录。
Login 类遵循 Facebook 的指南,我已经删除了我的所有代码,以使其在未来对 StackO 的读者具有相关性。
登录类
public class Login extends Activity
/**
* Called when the activity is first created.
*/
private CallbackManager callbackManager;
private ProfileTracker profileTracker;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_login);
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "email", "user_friends");
profileTracker=new ProfileTracker()
@Override
protected void onCurrentProfileChanged (
Profile oldProfile,
Profile currentProfile)
Log.i("profileTracker", "profileTracker");
;
if (profileTracker == null)
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
;
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>()
@Override
public void onSuccess(LoginResult loginResult)
Intent i = new Intent(Login.this, MainActivity.class);
startActivity(i);
System.out.print("Logged in");
@Override
public void onCancel()
// App code
@Override
public void onError(FacebookException exception)
// App code
Log.i("Error" , "Error");
);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
callbackManager.onActivityResult(requestCode, resultCode, data);
SplashScreen 类
public class SplashScreen extends Activity
private static final int SPLASH_TIME_OUT = 2000;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Fabric.with(this, new Crashlytics());
setContentView(R.layout.activity_splash_screen);
new Handler().postDelayed(new Runnable()
@Override
public void run()
Intent i = new Intent(SplashScreen.this, Login.class);
startActivity(i);
finish();
, SPLASH_TIME_OUT);
【问题讨论】:
【参考方案1】:-您好,您可以使用Profile Tracker
并在您的Onstart
方法中启动它并检查Profile
是否存在。
-这是示例代码:-
-profileTracker = new ProfileTracker()
@Override
protected void onCurrentProfileChanged(
Profile oldProfile,
Profile currentProfile)
Log.i("accesstokensuccess", "gjk");
;
profile = Profile.getCurrentProfile();
if( (profile != null) )
..you are already logged in..code for your main activity....
【讨论】:
它不起作用。我已经更新了我的代码。当我已经登录时,我不会直接进入 MainActivity。 @datasmurfen 请再次检查.. 或尝试清除应用程序并注销然后再次尝试此代码 清理了项目,重建,从我的手机中删除了应用程序,从 FB 中删除了应用程序,然后重新启动了我的手机。还是没有运气。以上是关于检查用户是不是已登录 Facebook的主要内容,如果未能解决你的问题,请参考以下文章
在 ios 的 Facebook 登录中检查是不是已在此应用中注册