重新开放申请后,最后再利用Facebook的登录会话再利用、Facebook

由网友(蝴蝶落在指尖)分享简介:我要重新登录的解析Facebook的用户不显示在解析使用保存TOKEN的Facebook的登录对话框。 我使用三种方法保存和恢复会话,但如何在 ParseFacebookUtils Facebook的对象使用它们 / * *保存访问令牌和到期日期,所以你不必把它拿来每个 * 时间 * /公共静态布尔保存(Face...

我要重新登录的解析Facebook的用户不显示在解析使用保存TOKEN的Facebook的登录对话框。

我使用三种方法保存和恢复会话,但如何在 ParseFacebookUtils

Facebook的对象使用它们

  / * *保存访问令牌和到期日期,所以你不必把它拿来每个 * 时间 * /公共静态布尔保存(Facebook的会话,上下文的背景下){    编辑编辑= context.getShared preferences(KEY,Context.MODE_PRIVATE).edit();    editor.putString(令牌,session.getAccessToken());    editor.putLong(到期,session.getAccessExpires());    editor.putLong(LAST_UPDATE,session.getLastAccessUpdate());    返回editor.commit();}/ * *恢复访问令牌,并从共享preferences到期日。 * /公共静态布尔恢复(Facebook的会话,上下文的背景下){    共享preferences savedSession = context.getShared preferences(KEY,Context.MODE_PRIVATE);    session.setTokenFromCache(            savedSession.getString(TOKEN,空)            savedSession.getLong(到期,0),            savedSession.getLong(LAST_UPDATE,0));    返回session.isSessionValid();}公共静态无效明确(上下文的背景下){    编辑编辑= context.getShared preferences(KEY,Context.MODE_PRIVATE).edit();    editor.clear();    editor.commit();} 

-

和我对以下登录之前恢复会话

  ParseFacebookUtils.initialize(APP_ID);    //恢复会话    恢复(ParseFacebookUtils.getFacebook(),这一点);    //使用恢复的数据登录    ParseFacebookUtils.logIn(权限,LoginActivity.this,            新LogInCallback(){                @燮pressWarnings(德precation)                @覆盖                公共无效完成(ParseUser用户,ParseException的E){                //登录后工作                        ParseUser.enableAutomaticUser();                        保存(ParseFacebookUtils.getFacebook(),这一点);                }}); 
牛津剑桥等名校最新入学消息 重新开放申请信息汇总 最后关头拿下G5的offer

但它不工作,它总是打开的Facebook的登录对话框。

解决方案

我通过调用allowLoginUI =虚假的onCreate()我活动的方法openActiveSession方法解决它。我的code是 -

  ParseFacebookUtils.getSession()。openActiveSession(这一点,假的,新Session.StatusCallback(){@覆盖公共无效呼叫(会话的会话,SessionState会状态,异常除外){     如果(session.isOpened()){        ParseFacebookUtils.logIn(LoginActivity.this,                        新LogInCallback(){                            @覆盖                            公共无效完成(ParseUser用户,ParseException的E){                            //用户登录                            }                    });              }              其他              {                //发现错误              }           }        }); 

I want to re-login a Facebook user in parse without showing login dialog of Facebook using saved TOKEN in Parse.

I am using 3 methods for save and restore session but how to use them in Facebook object of ParseFacebookUtils?

/*
 * Save the access token and expiry date so you don't have to fetch it each
 * time
 */
public static boolean save(Facebook session, Context context) {
    Editor editor = context.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
    editor.putString(TOKEN, session.getAccessToken());
    editor.putLong(EXPIRES, session.getAccessExpires());
    editor.putLong(LAST_UPDATE, session.getLastAccessUpdate());
    return editor.commit();
}

/*
 * Restore the access token and the expiry date from the shared preferences.
 */
public static boolean restore(Facebook session, Context context) {
    SharedPreferences savedSession = context.getSharedPreferences(KEY, Context.MODE_PRIVATE);
    session.setTokenFromCache(
            savedSession.getString(TOKEN, null),
            savedSession.getLong(EXPIRES, 0),
            savedSession.getLong(LAST_UPDATE, 0));
    return session.isSessionValid();
}

public static void clear(Context context) {
    Editor editor = context.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
    editor.clear();
    editor.commit();
}

And i am restoring session by following before login-

    ParseFacebookUtils.initialize(APP_ID);
    // restore session
    restore(ParseFacebookUtils.getFacebook(), this);
    // login using restored data
    ParseFacebookUtils.logIn(permissions, LoginActivity.this,
            new LogInCallback() {
                @SuppressWarnings("deprecation")
                @Override
                public void done(ParseUser user, ParseException e) {

                // work after login

                        ParseUser.enableAutomaticUser();
                        save(ParseFacebookUtils.getFacebook(),this);
                }});

But it's not working it always opens login dialog of facebook.

解决方案

I solved it by calling openActiveSession method with allowLoginUI = false in onCreate() method of my Activity. My code is-

ParseFacebookUtils.getSession().openActiveSession(this, false, new Session.StatusCallback() {

@Override
public void call(Session session, SessionState state, Exception exception)
{
     if (session.isOpened()) {

        ParseFacebookUtils.logIn( LoginActivity.this,
                        new LogInCallback() {

                            @Override
                            public void done(ParseUser user, ParseException e) {
                            // user logged in
                            }

                    });
              }
              else 
              {
                // error found
              }
           }
        });

阅读全文

相关推荐

最新文章