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 集成不起作用