我想使用Facebook SSO服务对我的用户进行身份验证。我设法使用官方的Android Facebook sdk处理基本登录,这非常轻松,但似乎sdk无法处理设备轮换 - 至少我找不到让它正常工作的方法。
验证码:
loginButtonFacebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do FB login
facebook.authorize(LoginActivity.this, new DialogListener() {
@Override
public void onComplete(Bundle values) {
Toast.makeText(LoginActivity.this, "Facebook login successful", Toast.LENGTH_SHORT).show();
Log.d(TAG, "FACEBOOK LOGIN SUCCESSFUL");
//loginFB(facebook.getAccessToken());
}
@Override
public void onFacebookError(FacebookError error) {
Toast.makeText(LoginActivity.this, "FacebookError:" +error.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(DialogError e) {
Toast.makeText(LoginActivity.this, "Error: "+e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this, "Cancelled!", Toast.LENGTH_SHORT).show();
}
});
}
});
我的活动还需要处理FB登录活动的结果:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
这样可行,但facebook.authorize(...)方法需要我当前Activity的引用,因此它可以稍后进行回调。但是,如果在用户处于facebook授权活动时旋转设备,则我之前的活动将被销毁。因此,在用户授权我的应用程序之后,我没有得到关于此的回调。
有没有人为此找到解决方案?
由于
答案 0 :(得分:1)
在您的活动名称下的清单文件中,只需添加以下行
android:configChanges="orientation"
在您的活动中
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
................
}
答案 1 :(得分:1)
我通常讨厌推荐这个,但Facebook使用的Activity
可以锁定为肖像而不会产生任何负面影响。它所做的只是显示一个不确定的ProgressBar
。
检查清单中是否有名为com.facebook.LoginActivity
的活动,并确保其具有以下属性:
<activity
android:configChanges="keyboardHidden"
android:name="com.facebook.LoginActivity"
android:screenOrientation="portrait" />