古いFacebookクラスを非推奨にし、 Sessionクラスを使用してログインする新しい方法を導入する新しいバージョンの Facebook SDK (3.0) があるようです。
新しいログイン API を使用して簡単なアプリをすばやく作成しました。
public class MainActivity extends Activity {
private Session mFacebookSession;
private StatusCallback fbStatusCallback = new StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
Log.v("dbg", "state: " + state);
Log.v("dbg", "session: " + session);
}
};
public void bc(View view)
{
mFacebookSession = Session.openActiveSession(this, true, fbStatusCallback);
}
//etc..
}
コールバックは 2 回呼び出される必要があります。1 回目は実際のセッション トークンを破棄するため、2 回目は新しいアクセス トークンを取得するためです。もちろん、アプリIDはマニフェストファイルなどのメタデータとして設定されています.
コードを実行すると、Facebook ログイン ダイアログが表示され、ユーザー名とパスワードを入力して閉じます。
ただし、ログには次のようにしか表示されません。
01-17 03:28:01.587: V/dbg(7002): state: OPENING
01-17 03:28:01.587: V/dbg(7002): session: {Session state:OPENING, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:xxxxxxxxxxxxxxx}
その結果、mFacebookSession.getAccessToken()を呼び出そうとすると、空の文字列 (null ではない) が返されます。
問題に見えるのは?
これをどのように解決したか(後で)
onActivityResult をオーバーライドし、Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); を呼び出しました。