Android 应用程序中的 Facebook 登录正在重定向到本机 Facebook Android 应用程序

Posted

技术标签:

【中文标题】Android 应用程序中的 Facebook 登录正在重定向到本机 Facebook Android 应用程序【英文标题】:Facebook login within Android app is redirecting to native Facebook Android app 【发布时间】:2014-04-15 10:40:11 【问题描述】:

我在我的应用程序中使用最新的 Facebook sdk 登录。当我的设备中未安装本机 facebook 应用程序时,登录运行良好。但是,如果安装了本机 facebook 应用程序,那么我的登录名将被重定向到本机 facebook 应用程序。

但我希望我的应用程序仅使用 facebook 对话框来登录。如何限制我的应用程序仅使用 Facebook sdk 对话框登录?

下面是我的登录示例代码

代码:

Session.openActiveSession(MainActivity.this, true, new Session.StatusCallback() 

              // callback when session changes state



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

                Log.e("session","open session");

                if (session.isOpened()) 

                    strAccesstoken=session.getAccessToken();
                     List<String> permissions = session.getPermissions();

                     Log.e("current permissions",""+permissions);
                        if (!isSubsetOf(PERMISSIONS, permissions)) 

                            Session.NewPermissionsRequest newPermissionsRequest = new Session
                                    .NewPermissionsRequest(MainActivity.this, PERMISSIONS);
                        session.requestNewPublishPermissions(newPermissionsRequest);
                            return;
                        

                  // make request to the /me API
                  Request.executeMeRequestAsync(session, new Request.GraphUserCallback() 



                    // callback after Graph API response with user object


                    @Override
                    public void onCompleted(GraphUser user, Response response) 
                        // TODO Auto-generated method stub


                        if (user != null) 
                            welcome = (TextView) findViewById(R.id.welcome);
                            welcome.setText("Hello " + user.getName() + "!");
                            strCurrentuser=user.getId();


                          

                         // Check for publish permissions    


                    
                  );
                
              
            );

【问题讨论】:

【参考方案1】:

使用这个:

Session.OpenRequest request=new Session.OpenRequest(activity);

request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
// suppressing single sign on will prevent the native app and use web based login.

Session session= new Session(activity);
session.openForRead(request);
session.setCallback(callback);
Session.setActiveSession(session);

【讨论】:

是的。这将为您提供一个会话实例。然后您可以使用它来发出任何其他请求。 这个回调是什么?我怎样才能得到这个。 session.setCallback(new StatusCallback() @Override public void call(Session session, SessionState state, Exception exception) // TODO 自动生成的方法存根 ); session.setCallback(callback) 不在会话下(会话中未定义的方法) session.setCallback(回调)。代替回调使用 new StatusCallback() // 你的代码【参考方案2】:

别忘了覆盖 onActivityResult

@Override

        public void onActivityResult(int requestCode, int resultCode, Intent data)
        

                super.onActivityResult(requestCode, resultCode, data);

                Session.getActiveSession().onActivityResult(activity, requestCode, resultCode, data);

            

【讨论】:

以上是关于Android 应用程序中的 Facebook 登录正在重定向到本机 Facebook Android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用程序中的 Facebook 登录正在重定向到本机 Facebook Android 应用程序

已安装 Facebook 应用程序时,Android 中的 Facebook 集成不起作用

Android 中的 AdMob Facebook 中介

Facebook 登录在 Android 应用程序浏览器中的 Facebook 中不起作用

Android 应用程序中的 Facebook 群聊

Apple在应用程序中拒绝了facebook登录应用程序