一部のゲームは Facebook SDK を使用してゲームにログインしていることに気付きました。初めてログインすると、ログインフォームが表示され、アプリに移動します。ログアウトして再度ログインすると、Facebook のログイン フォームが表示されなくなります。別の Facebook アカウントでログインするには、Facebook アプリを使用する必要があります。なんで?ゲームのログアウト ボタンで Facebook もログアウトしないのはなぜですか? それは正しいメカニズムですか?
2 に答える
2
ログアウトには以下のコードを使用します。
private void logout(Facebook facebook) {
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
mAsyncRunner.logout(getBaseContext(), new RequestListener() {
@Override
public void onComplete(String response, Object state) {
Log.i("System out", "Logout:onComplete:res:state " + response
+ ":" + state);
new LoginData(SettingsActivity.this).clearFacebookDataInPref();
handler.sendEmptyMessage(1);
}
@Override
public void onIOException(IOException e, Object state) {
Log.i("System out", "Logout:state" + ":" + state);
e.printStackTrace();
exceptionMessage = e.getMessage();
handler.sendEmptyMessage(2);
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
Log.i("System out", "Logout:OnFileNotFoundExce:state:" + state);
e.printStackTrace();
exceptionMessage = e.getMessage();
handler.sendEmptyMessage(2);
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
Log.i("System out", "Logout:MalformedURLExce:state:" + state);
e.printStackTrace();
exceptionMessage = e.getMessage();
handler.sendEmptyMessage(2);
}
@Override
public void onFacebookError(FacebookError e, Object state) {
Log.i("System out", "Logout:onFacebookError:state" + state);
e.printStackTrace();
exceptionMessage = e.getMessage();
handler.sendEmptyMessage(2);
}
});
}
アクセス トークンを保存し、共有設定で有効期限が切れる場合は、onComplete リスナーで削除/クリアします。
于 2012-08-01T05:36:15.023 に答える
2
Facebook SDK によって提供される Facebook.java を開くと、次のような変更がありました。
public void authorize(Activity activity, String[] permissions,
int activityCode, final DialogListener listener) {
boolean singleSignOnStarted = false;
mAuthDialogListener = listener;
/* // Prefer single sign-on, where available.
if (activityCode >= 0) {
singleSignOnStarted = startSingleSignOn(activity, mAppId,
permissions, activityCode);
}
// Otherwise fall back to traditional dialog.
if (!singleSignOnStarted) {*/
startDialogAuth(activity, permissions);
// }
}
于 2012-08-01T04:40:46.277 に答える