android facebook sdk总是在重启时要求登录
Posted
技术标签:
【中文标题】android facebook sdk总是在重启时要求登录【英文标题】:android facebook sdk always asking for login on restart 【发布时间】:2015-10-13 16:47:53 【问题描述】:我已经使用 4.0 sdk 实现了 facebook 登录,成功登录后,我获得了一个访问令牌并继续进行主要活动,一切正常。 但是当我关闭并重新打开应用程序时,accesstoken 为空。我不知道如何解决它
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
if (BuildConfig.DEBUG)
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
setContentView(R.layout.activity_login_fb);
prefs = getSharedPreferences("config", Context.MODE_PRIVATE);
editor = prefs.edit();
token_session = "";
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logOut();
accessTokenTracker = new AccessTokenTracker()
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken)
AccessToken.setCurrentAccessToken(newAccessToken);
updateWithToken(newAccessToken);
;
accessToken = AccessToken.getCurrentAccessToken();
updateWithToken(AccessToken.getCurrentAccessToken());
accessTokenTracker.startTracking();
startApp();
private void startApp()
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>()
@Override
public void onSuccess(LoginResult loginResult)
AccessToken.setCurrentAccessToken(loginResult.getAccessToken());
sendLoginToBackend();
//Log.i("Facebook Login", loginResult.getAccessToken().getToken());
@Override
public void onCancel()
//Log.i("Facebook Login", "Login Cancel");
@Override
public void onError(FacebookException e)
Log.e("Facebook Login", "Login Error");
);
private void updateWithToken(AccessToken currentAccessToken)
if (currentAccessToken == null)
Log.i("Facebook Access Token ","null");
else
Log.i("Facebook Access Token ","not null");
if (currentAccessToken != null)
if (prefs.getBoolean("datos_completos",false))
new Handler().postDelayed(new Runnable()
// THIS WILL BE REMOVED
@Override
public void run()
//Intent i = new Intent(self, MainActivity.class);
//startActivity(i);
//finish();
, 500);
else
Toast.makeText(this,"NO FB TOKEN",Toast.LENGTH_LONG).show();
【问题讨论】:
【参考方案1】:您每次都在 Activity 的 onCreate 方法中调用注销。
LoginManager.getInstance().logOut();
【讨论】:
哇!!我怎么看不到这条线!!???我想我对没有阅读所有代码的截止日期太困扰了!我很抱歉!谢谢! .....我不配被称为程序员了。【参考方案2】:删除这一行
LoginManager.getInstance().logOut();
在 onCreate 方法上调用 logout 方法意味着每次应用程序启动时您都会从 facebook 注销。
【讨论】:
以上是关于android facebook sdk总是在重启时要求登录的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Android SDK 即使在许可后也没有电子邮件
android facebook sdk,分享——如何检测成功?
为啥 Facebook PHP SDK getUser 总是返回 0?
Facebook SDK分享总是返回sharerDidCancel [重复]
在 Facebook SDK Android 上找不到文件“com.facebook.android.facebook”