この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
facebook_sdk [2015/02/18 22:22] 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状態を見て処理をハンドリング ===== | ||