我遇到了一个非常奇怪的问题。我在我的 Android 应用程序中使用 Parse 进行 Facebook 和 Twitter 登录。我发现了一种无法解释的行为。当我登录 Facebook 时 - 我从 Twitter 注销,反之亦然。我只用登录逻辑编写了一个示例,这种情况重复了。这是我的示例:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.facebook).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (ParseFacebookUtils.getSession() == null || ParseFacebookUtils.getSession().isClosed()) {
ParseFacebookUtils.logIn(MainActivity.this, new LogInCallback() {
@Override
public void done(ParseUser arg0, ParseException arg1) {
if (arg0 != null) {
Log.i("fsq", "facebook login ok");
if (ParseTwitterUtils.getTwitter().getAuthToken() == null) {
Log.i("fsq", "twitter logout after facebook login");
} else {
Log.i("fsq", "twitter ok after facebook login");
}
} else {
Log.i("fsq", "facebook login fail");
}
}
});
} else {
Log.i("fsq", "facebook alreay logged in");
}
}
});
findViewById(R.id.twitter).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (ParseTwitterUtils.getTwitter().getAuthToken() == null) {
ParseTwitterUtils.logIn(MainActivity.this, new LogInCallback() {
@Override
public void done(ParseUser arg0, ParseException arg1) {
if (arg0 != null) {
Log.i("fsq", "twitter login ok");
if (ParseFacebookUtils.getSession() == null || ParseFacebookUtils.getSession().isClosed()) {
Log.i("fsq", "facebook logout after twitter login");
} else {
Log.i("fsq", "facebook ok after twitter login");
}
} else {
Log.i("fsq", "twitter login fail");
}
}
});
} else {
Log.i("fsq", "twitter already logged in");
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}
}
我正在使用 Parse 版本 1.3.1。有没有人面临这样的问题?还是我做错了什么?