Android Facebook登录不';我使用三星安卓4.2时无法工作

Android Facebook登录不';我使用三星安卓4.2时无法工作,android,facebook,Android,Facebook,当我使用HTC安卓时,它做得非常好。然而,当我使用Facebook的API使用三星安卓4.2登录时,我会显示一条Toast消息,如“登录失败,请联系此应用程序的标记,让他们向Facebook发送1732910” 请帮我修一下 public class FacebookLogin { /* variable Facebook */ private static final String FACEBOOK_APPID = "578073962236765"; private FacebookConn

当我使用HTC安卓时,它做得非常好。然而,当我使用Facebook的API使用三星安卓4.2登录时,我会显示一条Toast消息,如“登录失败,请联系此应用程序的标记,让他们向Facebook发送1732910”

请帮我修一下

public class FacebookLogin {
/* variable Facebook */
private static final String FACEBOOK_APPID = "578073962236765";
private FacebookConnector facebookConnector;
private final Handler mFacebookHandler = new Handler();
ActivityBase activity;
Request.GraphUserCallback userCallback;
LoginService.OnSwimLogedInEvents swimLoginCallBack;
LoginService loginService;
Dialog changeDialog;
LoadingDialog loadingDialog;

public FacebookLogin(ActivityBase activity, Request.GraphUserCallback userCallback, LoginService.OnSwimLogedInEvents swimLoginCallBack) {
    this.activity = activity;
    this.loadingDialog = new LoadingDialog();
    this.userCallback = userCallback;
    this.swimLoginCallBack = swimLoginCallBack;
    this.loginService = new LoginService(activity);
    this.facebookConnector = new FacebookConnector(FACEBOOK_APPID,
            activity, activity, new String[]{
            "publish_stream", "email", "user_birthday", "read_stream", "offline_access"});
}

public void login() {
    Session.initializeStaticContext(activity);
    if (facebookConnector.getFacebook().isSessionValid()) {
        facebookConnector.getFacebook().getSession()
                .closeAndClearTokenInformation();
    }

    AuthListener listener = new AuthListener() {
        @Override
        public void onAuthSucceed() {
            doLogin();
        }

        @Override
        public void onAuthFail(String error) {
            //(new MessageAlert()).showDialog("Facebook authetication fail\r\nError:" + error, activity);
        }
    };
    SessionEvents.addAuthListener(listener);

    facebookConnector.login();
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}

private void doLogin() {
    AsyncTaskBase<Void, Void, Void> t = new AsyncTaskBase<Void, Void, Void>(
            activity) {
        @Override
        protected Void doInBackground(Void... params) {
            mFacebookHandler.post(facebookUserInfoRunner);
            return super.doInBackground(params);
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    };
    t.execute();
}

final Runnable facebookUserInfoRunner = new Runnable() {
    @Override
    public void run() {
       loadingDialog.showDialogLoading(activity);
        Request.executeMeRequestAsync(facebookConnector.getFacebook()
                .getSession(), new Request.GraphUserCallback() {

            @Override
            public void onCompleted(GraphUser user, Response response) {
                SwimAccount currentAccount = ((SwimApp) activity.getApplication()).getCurrentAccount();
                currentAccount.setAvatarUrl("https://graph.facebook.com/" + user.getId() + "/picture");
                currentAccount.setIsLogin(true);
                currentAccount.setFirstName(user.getFirstName());
                currentAccount.setLastName(user.getLastName());
                currentAccount.setStringId(user.getId());
                currentAccount.setAccountType("facebook");
                currentAccount.setEmail((String) response.getGraphObject().getProperty("email"));
                currentAccount.setBirthdate(user.getBirthday());
                currentAccount.setGender((String) response.getGraphObject().getProperty("gender"));
                if (userCallback != null) {
                    userCallback.onCompleted(user, response);
                }

                loginService.login(currentAccount.getEmail(), "", currentAccount.getAccountType(), currentAccount.getStringId(), swimLoginCallBack);
                //changeDialog.dismiss();
            }
        });
    }
};
公共类facebook登录{
/*可变Facebook*/
私有静态最终字符串FACEBOOK_APPID=“578073962236765”;
专用FacebookConnector FacebookConnector;
私有最终处理程序mFacebookHandler=新处理程序();
活性基活性;
Request.GraphUserCallback用户回调;
LoginService.onswimlogedEvents swimLoginCallBack;
登录服务登录服务;
对话改变对话;
加载对话框加载对话框;
public FacebookLogin(ActivityBase活动、Request.GraphUserCallback用户回调、LoginService.OnSwimLogedEvents swimLoginCallBack){
这个。活动=活动;
this.loadingDialog=新建loadingDialog();
this.userCallback=userCallback;
this.swimLoginCallBack=swimLoginCallBack;
this.loginService=新的loginService(活动);
this.FACEBOOK连接器=新的FACEBOOK连接器(FACEBOOK\u APPID,
活动,活动,新字符串[]{
“发布流”、“电子邮件”、“用户生日”、“阅读流”、“离线访问”});
}
公共无效登录(){
会话.初始化EstaticContext(活动);
如果(facebookConnector.getFacebook().isSessionValid()){
facebookConnector.getFacebook().getSession()
.closeAndClearTokenInformation();
}
AuthListener=新的AuthListener(){
@凌驾
公共void onAuthSucceed(){
多洛金();
}
@凌驾
AuthFail上的公共void(字符串错误){
//(new MessageAlert()).showDialog(“Facebook身份验证失败\r\n错误:+错误,活动”);
}
};
SessionEvents.addAuthListener(listener);
facebookConnector.login();
}
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
facebookConnector.getFacebook().authorizeCallback(请求代码、结果代码、数据);
}
私有void doLogin(){
AsyncTaskBase t=新的AsyncTaskBase(
(活动){
@凌驾
受保护的Void doInBackground(Void…参数){
mFacebookHandler.post(facebookUserInfoRunner);
返回super.doInBackground(参数);
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
}
};
t、 执行();
}
最终可运行facebookUserInfoRunner=new Runnable(){
@凌驾
公开募捐{
loadingDialog.showDialogLoading(活动);
Request.executeRequestAsync(facebookConnector.getFacebook()
.getSession(),新请求.GraphUserCallback(){
@凌驾
未完成公共无效(GraphUser用户,响应){
SwimAccount currentAccount=((SwimApp)activity.getApplication()).getCurrentAccount();
currentAccount.setAvatarUrl(“https://graph.facebook.com/“+user.getId()+”/picture”);
currentAccount.setIsLogin(真);
currentAccount.setFirstName(user.getFirstName());
currentAccount.setLastName(user.getLastName());
currentAccount.setString(user.getId());
currentAccount.setAccountType(“facebook”);
currentAccount.setEmail((字符串)response.getGraphObject().getProperty(“电子邮件”));
currentAccount.setBirthdate(user.getBirthDate());
currentAccount.setGender((字符串)response.getGraphObject().getProperty(“性别”);
if(userCallback!=null){
userCallback.onCompleted(用户,响应);
}
loginService.login(currentAccount.getEmail(),“”,currentAccount.getAccountType(),currentAccount.getStringId(),swimLoginCallBack);
//changeDialog.disclose();
}
});
}
};

}找到了解决我问题的方法。尝试从清单中的Facebook登录活动中删除android:noHistory=“true”。这会扰乱会话的身份验证流程。

XDA上的用户似乎也遇到了同样的问题

他们声称您可以尝试以下任何一种:

(1) 设置>开发人员选项上的“不保留活动”选项。若它是打开的,那个么当一个应用程序调用某个弹出窗口时,系统会关闭该应用程序,然后系统会重新启动它。。。还有你的环

(2) 如果卸载Facebook应用程序,则可以通过应用程序登录,然后重新安装Facebook应用程序

我不知道这些答案有多“官方”,但我认为这可能值得一试

资料来源:
这里也一样,请回答。有什么解决办法吗?我在使用4.2+的三星S4时遇到了同样的问题。请确保您使用的是最新版本的facebook sdk。你可以从那里得到它,也可以通过那里的基本教程。我做了,但它没有解决我的问题。你能显示你的Android清单吗?您是否在清单中设置了:android:launchMode=“singleInstance”?HTC的操作系统版本是什么?设备型号?或者这可能是问题所在:尝试了他们,但他们没有帮助。我发布了我的解决方案(解决了我的问题),但我不确定它是否会解决其他人的问题。