この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
facebook_sdk [2015/02/18 22:21] sou [Session状態を見て処理をハンドリング] |
facebook_sdk [2015/02/20 15:12] (現在) sou [layout_main.xml] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
v3.23.0 - Feb 5, 2015 現在 | v3.23.0 - Feb 5, 2015 現在 | ||
--- //[[sou@mss-g.co.jp|宗 昂志]] 2015/02/18 15:08// | --- //[[sou@mss-g.co.jp|宗 昂志]] 2015/02/18 15:08// | ||
+ | ===== ログイン処理 ===== | ||
+ | ※SDKのダウンロートとかFacebook Devの設定は省いてます。 | ||
+ | |||
+ | 以下のようなログインボタンの実装です。\\ | ||
+ | こちらで使用しているボタンはSDKに組み込まれているログインボタンになります。 | ||
+ | {{:device-2015-02-19-154813.png?nolink&300|}} | ||
+ | |||
+ | ログインが完了すると、以下のようにボタンが切り替わります。\\ | ||
+ | SDKのボタンを使用する場合、ボタンの切り替え処理はSDKが行っているようなので、特に必要はなさそうです。\\ | ||
+ | もし自分でボタンを作成したい場合は、Session状態を見ながら切り替える必要があります。\\ | ||
+ | {{:device-2015-02-19-171150.png?nolink&300|}} | ||
+ | |||
+ | ==== AndroidManifest.xml ==== | ||
+ | permissionとmeta-dataを追加します。 | ||
+ | <uses-permission android:name="android.permission.INTERNET" /> | ||
+ | |||
+ | <activity android:name="com.facebook.LoginActivity" /> | ||
+ | <meta-data | ||
+ | android:name="com.facebook.sdk.ApplicationId" | ||
+ | android:value="@string/facebook_appId" /> | ||
+ | |||
+ | ==== string.xml ==== | ||
+ | <string name="facebook_appId">appid</string> | ||
+ | |||
+ | ==== activity_main.xml ==== | ||
+ | <com.facebook.widget.LoginButton | ||
+ | android:id="@+id/btn_auth" | ||
+ | android:layout_width="wrap_content" | ||
+ | android:layout_height="wrap_content" | ||
+ | android:layout_gravity="center_horizontal" | ||
+ | /> | ||
+ | |||
+ | ==== MainActivity.java ==== | ||
+ | |||
+ | public class MainActivity extends Activity { | ||
+ | | ||
+ | private final static String TAG = MainActivity.class.getSimpleName(); | ||
+ | | ||
+ | private UiLifecycleHelper uiHelper; | ||
+ | | ||
+ | private Session.StatusCallback callback = new Session.StatusCallback() { | ||
+ | @Override | ||
+ | public void call(Session session, SessionState state, Exception exception) { | ||
+ | onSessionStateChange(session, state, exception); | ||
+ | } | ||
+ | }; | ||
+ | | ||
+ | | ||
+ | @Override | ||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | super.onCreate(savedInstanceState); | ||
+ | setContentView(R.layout.activity_main); | ||
+ | | ||
+ | uiHelper = new UiLifecycleHelper(this, callback); | ||
+ | uiHelper.onCreate(savedInstanceState); | ||
+ | | ||
+ | // ログインボタン(認証ボタン) | ||
+ | LoginButton authButton = (LoginButton) findViewById(R.id.btn_auth); | ||
+ | authButton.setPublishPermissions(Arrays.asList("publish_actions")); | ||
+ | } | ||
+ | | ||
+ | private void onSessionStateChange(Session session, SessionState state, Exception exception) { | ||
+ | if (state.isOpened()) { | ||
+ | } else if (state.isClosed()) { | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | @Override | ||
+ | public void onResume() { | ||
+ | super.onResume(); | ||
+ | uiHelper.onResume(); | ||
+ | Session session = Session.getActiveSession(); | ||
+ | Log.d("Session state:", ""+session.getState()); | ||
+ | } | ||
+ | | ||
+ | @Override | ||
+ | public void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
+ | super.onActivityResult(requestCode, resultCode, data); | ||
+ | uiHelper.onActivityResult(requestCode, resultCode, data); | ||
+ | } | ||
+ | | ||
+ | @Override | ||
+ | public void onPause() { | ||
+ | super.onPause(); | ||
+ | uiHelper.onPause(); | ||
+ | } | ||
+ | | ||
+ | @Override | ||
+ | public void onDestroy() { | ||
+ | super.onDestroy(); | ||
+ | uiHelper.onDestroy(); | ||
+ | } | ||
+ | | ||
+ | @Override | ||
+ | public void onSaveInstanceState(Bundle outState) { | ||
+ | super.onSaveInstanceState(outState); | ||
+ | uiHelper.onSaveInstanceState(outState); | ||
+ | } | ||
+ | } | ||
===== Session状態を見て処理をハンドリング ===== | ===== Session状態を見て処理をハンドリング ===== | ||
ライン 38: | ライン 137: | ||
* 入っていなければモーダルのダイアログが起動。 | * 入っていなければモーダルのダイアログが起動。 | ||
*/ | */ | ||
+ | | ||
/** | /** | ||
* 認証が終わった際に続けて投稿処理を行う場合、フラグを持たせておき | * 認証が終わった際に続けて投稿処理を行う場合、フラグを持たせておき | ||
ライン 44: | ライン 143: | ||
* (ここはもうちょっと良い方法がありそう…) | * (ここはもうちょっと良い方法がありそう…) | ||
*/ | */ | ||
- | // Session状態が変化したときに投稿処理を行うフラグ | + | // Session状態が変化したときに投稿処理を行うフラグ |
mDoPost = true; | mDoPost = true; | ||
+ | | ||
} | } |