我已经集成了最新的Facebook
android sdk(Sdk 4.0).
这是我在我的onCreate方法中添加的代码. @H_502_3@FacebookSdk.sdkInitialize(this.getApplicationContext()); callbackManager = CallbackManager.Factory.create(); if(AccessToken.getCurrentAccessToken()!=null){ Log.d(FBTAG,"facebook already logged in"); isFBLogin = true; } LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.d(FBTAG,"facebook log in"); isFBLogin = true; } @Override public void onCancel() { // App code isFBLogin = false; } @Override public void onError(FacebookException error) { isFBLogin = false; Log.d(FBTAG,"facebook login error: "+error); // App code } });
这是我在我的onCreate方法中添加的代码. @H_502_3@FacebookSdk.sdkInitialize(this.getApplicationContext()); callbackManager = CallbackManager.Factory.create(); if(AccessToken.getCurrentAccessToken()!=null){ Log.d(FBTAG,"facebook already logged in"); isFBLogin = true; } LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.d(FBTAG,"facebook log in"); isFBLogin = true; } @Override public void onCancel() { // App code isFBLogin = false; } @Override public void onError(FacebookException error) { isFBLogin = false; Log.d(FBTAG,"facebook login error: "+error); // App code } });
这是我用于onClickLogin的代码
@H_502_3@public void onClickLogin() { LoginManager.getInstance().logInWithPublishPermissions(this,PERMISSIONS); }我可以通过点击登录按钮和处理onClickLogin功能进行登录.现在下次我打开应用程序我正在检查AccessToken.getAccessToken的应用程序,以检查用户是否已经在Facebook上登录,但它始终为空.
在新的sdk中不存在登录的背景,所以我不必要求用户永远像以前在会话类中的旧版本一样登录.
解决方法
LoginManager返回的访问令牌将保存在共享首选项中,因此下次打开应用程序时,AccessToken.getCurrentAccessToken()应该具有相同的访问令牌,这与使用Session类的方式相同.您可以查看随SDK提供的示例来查看它们的工作.
确保您不会在会话之间重新安装应用程序,或将当前访问令牌显式设置为null.