检查用户是不是已登录 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的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是已经喜欢 Facebook 页面?

在 ios 的 Facebook 登录中检查是不是已在此应用中注册

Android,检查用户是不是使用 Facebook 登录

Firebase Facebook登录检查用户是不是存在

如何在 Firebase Auth 中检查用户是不是通过 Facebook 登录 [重复]

如何使用 JSTL 检查会话中是不是存在已登录用户?