2

アプリのバックエンドとして parse.com を使用しています。API ガイドとクイック スタート ガイドは役に立ちますが、facebook<-> ユーザー リンクを機能させることができないようです。

アプリには、2 つのサインイン ボタンがあります。1 つはユーザー番号とパスワードを入力するためのもので、もう 1 つは Facebook を使用してログインするためのものです。Facebook のログインはうまく機能し、ユーザーはアプリのソーシャル機能を使い始めることができます。問題は、電話番号とパスワードだけでログインする場合です。

リンクボタンのコードは次のとおりです。

 linkUser(ParseUser.getCurrentUser());


private void linkUser(final ParseUser user) {
List<String> permissions = Arrays.asList("email", Permissions.User.ABOUT_ME);
if (!ParseFacebookUtils.isLinked(user)) {
  ParseFacebookUtils.link(user, permissions, this, new SaveCallback() {

    @Override
    public void done(ParseException ex) {

      if (ex == null) {
        Log.d("MyApp", "No Exception!!");

        if (ParseFacebookUtils.isLinked(user)) {
          Log.d("MyApp", "Woohoo, user logged in with Facebook!");
        }
      } else {
        Log.d("MyApp", ex.getMessage());
      }

    }
  });
} else {
  Log.d("MyApp", "user already link in with Facebook!");
}

アプリのキャッシュをクリアして新規インストールを行うと、まず Parse バックエンドで作成したダミー ユーザーでログインし、[リンク] ボタンをクリックします。logcat を確認しましたが、ユーザーがリンクされているかどうかを示すログ行が表示されません。まるで「完了」コードが起動しないかのようです。また、ログインして fbAuth データを解析して調べ、ユーザーの Facebook ID が表示されるかどうかを確認します...何も表示されません。

私が正しいことをしている/していないかもしれないことの1つは、onActivityResultメソッドにあるはずの認証ワークフローを終了することです。これを呼び出しアクティビティ (設定) に入れました。

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (resultCode == 11000) {
} else {
  ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}
}

リンク機能についての私の理解では、通常の解析ユーザーを取得してログインし (電話番号、電子メール/パスなど)、その ParseUser をキャッシュしてから、SSO を使用して facebook にリンクし、ユーザーの facebook 資格情報を介してリンクできます。 Facebook アプリまたは Web ページのいずれかです。parsefacebookutils.link は、facebook ユーザーを parse ユーザーに関連付け、バックエンドでリンクされるようにします。そうすれば、通常のユーザーが Facebook の機能を使い始めることができます。これは正しいです?

コードを要求するのは本当に嫌いですが、誰かがこの機能を利用したことがある場合は、その方法を共有したり、私が間違っていたことを指摘したりできますか?

4

1 に答える 1

3

私はこれが遅すぎることを知っていますが、答えはそれを必要とする誰かを助けるかもしれません. 私も同じ問題を抱えていたので、以下のコードを試してみましたが、うまくいきました。詳細については、リンクを参照してください

Facebook のリンク コードが使用されているアクティビティに、次のコードを含めます。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
              if (requestCode == com.facebook.Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE)
               ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}
于 2014-02-27T07:40:14.057 に答える