我有一个类似菜单活动(我们称之为活动 1)的东西,用户按下一个按钮,另一个活动(我们称之为活动 2)开始。我想在活动 2 中使用 Facebook SSO。
活动1中启动活动2的代码如下:
Intent i = new Intent(this, ViewDomanda.class);
startActivity(i);
到目前为止,一切顺利... ViewDomanda(即活动 2 开始正常)。的相关代码ViewDomanda.java
为:
public class ViewDomanda extends Activity {
private Facebook qqFacebook;
private SharedPreferences mPrefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.domanda);
this.qqFacebook = new Facebook(MY_APP_ID);
/*
* Get existing access_token if any
*/
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
Log.i("access_token",String.valueOf(access_token));
if(access_token != null) {
this.qqFacebook.setAccessToken(access_token);
}
if(expires != 0) {
this.qqFacebook.setAccessExpires(expires);
}
/*
* Only call authorize if the access_token has expired.
*/
if(!this.qqFacebook.isSessionValid()) {
this.qqFacebook.authorize((Activity)this, new String[] {},
new DialogListener() {
public void onComplete(Bundle values) {
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("access_token", qqFacebook.getAccessToken());
editor.putLong("access_expires", qqFacebook.getAccessExpires());
editor.commit();
Log.i("onComplete","done");
}
public void onFacebookError(FacebookError error) {}
public void onError(DialogError e) {}
public void onCancel() {}
});
}
}
然后我有通常的:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
this.qqFacebook.authorizeCallback(requestCode, resultCode, data);
}
我已登录 Facebook 应用程序,因此授权方法只是要求我授予 FB 应用程序权限。
问题是:
在授予 FB 应用程序权限后,活动 2 突然关闭,活动 1 又回来了。
更糟糕的是,没有调用 DialogListener 的 OnComplete 方法,并且当我的 FB 用户安装了 FB 应用程序时,Android 应用程序未获得授权。
我以为我完全按照教程中的内容进行了操作,但我肯定遗漏了一些东西。任何帮助将不胜感激。