hello_world.py

"Doing good is part of our code"

ParseのAndroidStudioでの使い方(後編)


ParseのAndroidStudioでの使い方(前編) - hello_world.py


昨日の続きをまとめます。自分用のメモです。

Facebook連携のログイン

まずは普通にfacebookデベロッパーサイト登録。

f:id:tanajun99:20150310204301p:plain

こことかを見ながらkeyやIDを発行。
Getting Started

Applicationクラスに以下を追加する。AppIDは発行されたランダム文字列

ParseFacebookUtils.initialize("AppID");

LoginActivityを以下のようにする。

public class LoginActivity extends Activity {

    private Button loginButton;
    private Dialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        loginButton = (Button) findViewById(R.id.facebook_log_in_button);
        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i(Application.TAG, "Login button をクリックしました。");
                onLoginButtonClicked();
            }
        });

        //現在facebookログイン中かどうかで条件分岐
        ParseUser currentUser = ParseUser.getCurrentUser();
        if ((currentUser != null) && ParseFacebookUtils.isLinked(currentUser)) {
            // 次のアクティビティへ
            NextActivity();
        }
        ParseAnalytics.trackAppOpened(getIntent());
    }

    private void onLoginButtonClicked() {
        LoginActivity.this.progressDialog = ProgressDialog.show(
                LoginActivity.this, "", "", true);
        List<String> permissions = Arrays.asList("","","");
        ParseFacebookUtils.logIn(permissions, this, new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException err) {
                LoginActivity.this.progressDialog.dismiss();
                if (user == null) {
                    Log.i(Application.TAG,
                            "Facebook ログインをキャンセルしました。");
                } else if (user.isNew()) {
                    Log.i(Application.TAG,
                            "Facebookでログインしました!");
                    NextActivity();
                } else {
                    Log.i(Application.TAG,
                            "Facebookでログインしました!");
                    NextActivity();
                }
            }
        });
    }

    /**
     *Facebookアプリをインストールしていないユーザーのために、「シングルサインオン」を提供
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
    }

    private void showHomeListActivity() {
        Intent intent = new Intent(this, NextActivity.class);
        startActivity(intent);
        //戻れないように、スクリーン閉じる
        finish(); 
    }

あえて公式サイトに載ってないような感じで書いたのですが、もっと効率良く、使いやすくできそうなのでいろいろ今後試します。いまはとりあえずこんな感じ。
次はSNS使わず、emailとかでのログイン機能です。

ログイン機能

ログイン機能の実装について。
以下をLogInActivityに加えることでログイン。Exceptionまたはuser==nullの場合には失敗です。

ParseUser.logInInBackground(name, password, new LogInCallback() {
    public void done(ParseUser user, ParseException e) {
        if (user != null) {
            Log.d(TAG, "Log in !");
        } else {
            Log.e(TAG, "Error!");
        }
    }
});

ちなみにログアウトは以下を使用。

ParseUser.logOut();

メールアドレス、パスワードを使用しないログインの場合は以下を使用。

ParseAnonymousUtils.logIn(new LogInCallback() {
  @Override
  public void done(ParseUser user, ParseException e) {
    if (e != null) {
      Log.e(TAG, "Error!");
    } else {
      Log.d(TAG, "Log in!");
    }
  }
});


他にもTwitterでもログイン実装できます。


機械学習が楽しくなってきたので、swiftC言語UNIXとかの勉強がほったらかしになってます。三つとも密かにもっとできるようになって、会社のめっちゃ優秀な先輩方を驚かせたいです!!
次は機械学習かけるようにがんばる!!