我正在开发一个非常简单的 Android 应用程序。它应该很快就会上市。我必须登录 Facebook,但 Facebook 应用程序似乎拒绝我的应用程序登录。我不能直接卸载 Facebook 应用,因为几周后它就会出现在 Google Play 上,当然我也不能要求用户卸载他们的 Facebook 应用。
private void goFacebookLogin(){
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()){
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null){
fbButton.setVisibility(Button.VISIBLE);
}
}
});
}else{
Toast.makeText(getApplicationContext(), "session is not opened", Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
这是我使用的代码。 那么...如何在不卸载 Facebook 应用程序的情况下使用我的 Facebook 应用程序登录?
最佳答案
Facebook 应用程序不应干扰您的应用程序登录 Facebook。事实上,如果用户安装了最新的 Facebook Android 应用程序,它会提供有用的 native 对话框。尝试使用此代码登录 Facebook:
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()){
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback);
}else{
session.openActiveSession(this, true, statusCallback);
}
其中 statusCallback
是:
private Session.StatusCallback statusCallback = new SessionStatusCallback();
内部类SessionStatusCallback
定义为:
protected class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened() && session != null){
sessionChangedCallback();
}
}
}//end of SessionStatusCallback class
方法 sessionChangedCallback()
是您在 session 状态更改时放置代码的位置。保持您的 onActivityResult()
代码不变。最后,请记住将其放入 list 文件中:
<activity
android:name="com.facebook.LoginActivity" >
</activity>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" />
尝试该代码,看看它是否有效。正如我之前所说,安装 Facebook 应用程序不应干扰您的应用程序登录 Facebook 的能力。
关于android - 如果我安装了 Facebook 应用程序,我的 Facebook 登录 Android 应用程序将不会打开 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176468/