2017-05-22 9 views
1

私はfacebookにリンクされた解析セッションで私のアプリにログインしています。 Facebookに投稿を共有しようとすると、再びログインするためのFacebookのウィンドウが表示されます。もし私がすでにログインしているのであれば、それはなぜですか?私はチェックし、AccessToken.getCurrentAccessToken()は、私がShareDialogを呼び出すとnullではないので、セッションが存在します。どうしましたか?Android Facebook Shareパスワードをもう一度尋ねるボタン

WelcomeActivity

public void initializeFacebookButton() { 

    if (AccessToken.getCurrentAccessToken() == null) 
     ParseFacebookUtils.initialize(this); 

    mLoginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      progressBar.setVisibility(View.VISIBLE); 
      ParseFacebookUtils.logInWithReadPermissionsInBackground(WelcomeActivity.this, 
        read_permissions, new LogInCallback() { 
         @Override 
         public void done(ParseUser user, ParseException e) { 
          progressBar.setVisibility(View.GONE); 
          if (e == null && user != null){ 
           ParseFacebookUtils.linkWithPublishPermissionsInBackground(user, 
             WelcomeActivity.this, publish_permission); 
           Log.d(TAG, "logged in"); 
            presenter.getUserFacebook(AccessToken.getCurrentAccessToken(), 
             user); 
          } else { 
           Log.e(TAG, "Error logging in "); 
          } 
         } 
        }); 
     } 
    }); 
} 

ShareActivity

Button shareButton; 

shareButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ShareOpenGraphObject object = new ShareOpenGraphObject.Builder() 
       .putString("og:type", "fitness.course") 
       .putString("og:title", title) 
       .putString("og:description", description) 
       .putInt("fitness:duration:value", time_in_seconds) 
       .putString("fitness:duration:units", "s") 
       .putDouble("fitness:metrics:location:latitude", latitude) 
       .putDouble("fitness:metrics:location:longitude", longitude) 
       .build(); 
     ShareOpenGraphAction action = new ShareOpenGraphAction.Builder() 
       .setActionType("fitness.runs") 
       .putObject("fitness:course", object) 
       .build(); 
     ShareOpenGraphContent content = new ShareOpenGraphContent.Builder() 
       .setPreviewPropertyName("fitness:course") 
       .setAction(action) 
       .build(); 

       ShareDialog.show(ShareActivity.this, content); 
      } 
     }); 
+0

' ShareDialog.show(ShareTheChallengeActivity、コンテンツ)と

ParseFacebookUtils.linkWithPublishPermissionsInBackground(user, WelcomeActivity.this, publish_permission); Log.d(TAG, "logged in"); presenter.getUserFacebook(AccessToken.getCurrentAccessToken(), user); 

を置き換えるべきだと思いますか? – hellyale

+0

@hellyale投稿のための活動の元の名前を変更したので、私はタイプミスでした。私は訂正して私の答えを編集しました。 – Mauricio

答えて

1

shareButtonをクリックする前に、あなたがどこかにログアウトしましたか? 下記のコードを確認してください。

LoginManager.getInstance().logOut(); 
1

私はあなたの問題は、このだと思う -

ParseFacebookUtils.logInWithReadPermissionsInBackground(WelcomeActivity.this, 
        read_permissions, 

アクセス許可を公開取得する必要があります - refer here

チェック - あなたのコードによるとlogInWithReadPermissionsInBackground

1

logInWithReadPermissionsInBackground 最初の意志実行すると、読書許可を求められたfacebookショーのポップアップが表示され、次にノートのポップアップが表示され、投稿の許可が linkWithPublishPermissionsInBackground と表示されるはずです。それはポップアップを見て、2回確認する必要があると言いました。

は、しかし、私はそれゆえ(保持しlinkWithPublishPermissionsInBackgroundを実行します)現在の活動が終了している実行している ParseFacebookUtils.linkWithPublishPermissionsInBackground(user, WelcomeActivity.this, publish_permission); ながら、ダッシュボード(またはログインしているユーザーのための任意のページ)にユーザーをナビゲート presenter.getUserFacebook(AccessToken.getCurrentAccessToken(), user); と呼ばれていたことが怖いです。 `; は、私はあなたが

ParseFacebookUtils.linkWithPublishPermissionsInBackground(user, WelcomeActivity.this, publish_permission,new LogInCallback(){public void done(ParseUser user, ParseException e) { 
if (e == null && user != null) { 
    Log.d(TAG, "logged in"); 
    presenter.getUserFacebook(AccessToken.getCurrentAccessToken(),user); 
}}});