2

我正在为我的 Android 应用程序使用具有 Facebook 功能的登录功能。我面临一个问题,设备中现有的 FaceBook 应用程序。

我正在使用SessionLoginSample登录 facebook。它显示一个自定义视图以使用 facebook 登录,它工作正常,但如果设备中安装了 facebook 应用程序,则它不会显示其自定义视图,而是导航到 facebook 应用程序并显示其登录页面(或视图。见下图) 如果我登录 facebook 应用程序,我没有从 facebook 身份验证过程中得到正确的响应。

Facebook 应用程序登录视图

在此处输入图像描述

如果设备中没有安装 facebook 应用程序,那么它将显示其自定义视图,并且特定功能的所有整个流程都可以正常工作。

SessionLoginSample 的自定义 View

在此处输入图像描述

即使设备中安装了 facebook 应用程序或与此问题相关的任何替代方法,是否有任何方法可以始终显示 SessionLoginSample 的自定义视图?

4

1 回答 1

0

我已经通过我的应用程序中的这个代码部分解决了。这将在两种情况下都给出响应,即安装或未安装本机应用程序。

这是一个链接

import com.facebook.AsyncFacebookRunner;
import com.facebook.DialogError;
import com.facebook.Facebook;
import com.facebook.Facebook.DialogListener;
import com.facebook.FacebookError;
import com.facebook.Session;
import com.facebook.SessionState;

facebook = new Facebook( APP_ID );
mAsyncRunner = new AsyncFacebookRunner( facebook );
loginWithFB();


public void loginWithFB()
    {
    if(!facebook.isSessionValid()) {         
     facebook.authorize(Login.this, new String[] {"publish_stream","read_stream", "offline_access"}, //Facebook.FORCE_DIALOG_AUTH, 
            new DialogListener() {

                    @Override
                    public void onComplete(Bundle values) {

                            SharedPreferences.Editor editor = mPrefs.edit();
                            editor.putString("access_token", facebook.getAccessToken());
                            editor.putLong("access_expires", facebook.getAccessExpires());
                            editor.commit();                                
                    }

                    @Override
                    public void onFacebookError(FacebookError error) {Log.e("FB:","Facebook Error" );}

                    @Override
                    public void onError(DialogError e) {Log.e("FB:","Error" );}

                    @Override
                    public void onCancel() {}
           });
    }
}


@Override
    public void onActivityResult( int requestCode, int resultCode, Intent data )
    {
        super.onActivityResult( requestCode, resultCode, data );
        facebook.authorizeCallback( requestCode, resultCode, data );
    }
于 2013-10-23T13:54:28.223 回答