Android Facebook登录不';我使用三星安卓4.2时无法工作
当我使用HTC安卓时,它做得非常好。然而,当我使用Facebook的API使用三星安卓4.2登录时,我会显示一条Toast消息,如“登录失败,请联系此应用程序的标记,让他们向Facebook发送1732910” 请帮我修一下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
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的操作系统版本是什么?设备型号?或者这可能是问题所在:尝试了他们,但他们没有帮助。我发布了我的解决方案(解决了我的问题),但我不确定它是否会解决其他人的问题。