簡體   English   中英

Facebook Android SDK 3.0登錄問題

[英]Facebook android sdk 3.0 login issue

我最近將代碼升級為使用FB android SDK 3.0。 我的應用程序有四個活動,並且不使用片段。 奇怪的是,我的代碼在android 2.3.4上沒有任何問題。 但在android 4.0.4中,會話狀態始終為“ OPENING”。 我正在使用UiLifeCycleHelper,下面是啟動器活動中的代碼。

SharedPreferences mPrefs;
String access_token = mPrefs.getString("access_token", null);

Session currentSession = Session.getActiveSession();
if(currentSession == null || currentSession.getState().isClosed())
{
    if(access_token!=null)
    {
        SharedPreferences.Editor editor = mPrefs.edit(); 

    //One time upgrade from FB SDK 2.0 to 3.0
        editor.putString("access_token", null);
        editor.commit();

        AccessToken new_access_token = AccessToken.createFromExistingAccessToken(access_token, null, null, null, null);
        currentSession.open(new_access_token, myCallback);
        Session.setActiveSession(currentSession);
    }
    else
    {
        Session.openActiveSession(this, true, myCallback);
    }
}
else if (!currentSession.isOpened())
{
     OpenRequest openRequest = new OpenRequest(this).setCallback(myCallback);
     openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
     openRequest.setPermissions(Arrays.asList(permissions));
     openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
     currentSession.openForRead(openRequest);

}
else if(currentSession.isOpened())
{
    handleRequest(currentSession);

}


StatusCallback myCallback = new StatusCallback()
{

    @Override
    public void call(Session session, SessionState state, Exception exception)
    {
        handleRequest(session);

    }
};


public void handleRequest(Session activeSession)
{

    Request new_request = new Request(activeSession, "/me/friends", null, null, new Callback()
    {

        @Override
        public void onCompleted(Response response)
        {

            //Process the response and make UI changes.
        }

});
}

首先,我懷疑問題是由於舊版Facebook應用(1.9)引起的。 所以我升級到了最新版本(3.2)。 問題仍然存在於Android 4.0.4上。

這是我在onActivityResult回調中的代碼

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
        uihelper.onActivityResult(requestCode, resultCode, data);
}

有什么問題嗎?

您還記得添加onActivityResult代碼嗎?

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}

也看看另一個問題

我自己解決了。 剛剛在myCallback中注釋掉了handleRequest。

StatusCallback myCallback = new StatusCallback()
{

    @Override
    public void call(Session session, SessionState state, Exception exception)
    {
    //handleRequest(session);

    }
};

這次,我的應用在android 2.3.4和4.0.4上都沒有太大問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM