在Android应用程序中登录facebook的问题

时间:2013-10-21 12:11:58

标签: android android-facebook

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

我正在使用SessionLoginSample登录facebook。它显示一个用于登录facebook的自定义视图,它工作正常但是 如果在设备中安装了facebook应用程序,那么它将不会显示其自定义视图,而是导航到Facebook应用程序并显示其登录页面(或查看。见下图),如果我在facebook app登录我没有得到Facebook认证过程的正确回应。

Facebook应用程序登录视图

enter image description here

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

SessionLoginSample的自定义视图

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

这是thi的链接

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 );
    }