2016-09-04 10 views
0

私は、このアクセス許可をユーザーに要求するAndroid Appを作成しています。デフォルトのログイン許可+ user_friends + publish_action。Facebook権限ダイアログでプロンプトが表示されない

私の最初のアクティビティでは、ログイン+ "user_friends"の許可を求め、素晴らしい仕事をしました。

私の2番目のアクティビティで、私はAlertDialogの選択後に "publish_action"パーミッションを求めています。 問題は、私は「publish_action」ボックスのために求めるプロンプトされたことはないは、アプリが要求をスキップして、別の活動(リーダーボード)ここで

を呼び出し先に行くということである私の第二の活動:

CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    FacebookSdk.sdkInitialize(getApplicationContext()); 

    setContentView(R.layout.activity_main); 

callbackManager = CallbackManager.Factory.create(); 
final Context context = this; 

//stuff 

b_exit.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View V) 
     { 

      final AlertDialog.Builder builder = new AlertDialog.Builder(context); 
      builder.setMessage(getString(R.string.salva_dati)) 
        .setCancelable(true) 
        .setPositiveButton(getString(R.string.si), new DialogInterface.OnClickListener() { 
         public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 

            askForFBPublishPerm(); 

            SharedPreferences.Editor editor = sharedpreferences.edit(); 
            editor.clear(); 
            editor.apply(); 

            Intent intent = new Intent(getApplicationContext(), Leaderboard.class); 
            startActivity(intent); // IT START WITHOUT ASK ME THE PERMISSION 
           } 
          } 
         } 
        }) 
} 

void askForFBPublishPerm(){ 
    Log.d("perm", "asking for the permissions"); //I SEE THAT LOG BUT NOTHING MORE AFTER THAT LINE 
    callbackManager = CallbackManager.Factory.create(); 
    LoginManager.getInstance().logInWithPublishPermissions(this,Arrays.asList("publish_actions")); 

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
       Log.d("perm", "SUCCESS");//I DONT SEE THAT LOG 
      } 

     @Override 
     public void onCancel() { 
      Toast.makeText(getApplicationContext(), "cancelled while asking publish permission", Toast.LENGTH_LONG).show(); 
      Log.d("perm", "cancelled while asking publish permission"); 
      //I DONT SEE THAT LOG 
     } 

     @Override 
     public void onError(FacebookException error) { 
      Toast.makeText(getApplicationContext(), "error occurred while asking publish permission!", Toast.LENGTH_LONG).show(); 
      Log.d("perm", "error occurred while asking publish permission!"); //I DONT SEE THAT LOG 

     } 
    }); 

} 

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

で私のログ私はaskForFBPublishPerm()が呼び出されたのを見ますが、onSuccess()やonCancel()やonError()に決して入力しません。

私はまた、Facebookから私のアプリを見て、彼らは私に "publish_action"の許可を与えた。

この「publish_action」リクエストは機能しません。理由はわかりません。、誰かが私を助けることができますか?アドバイスありがとう

答えて

1

onActivityResultでcallbackManagerを処理します。このコードを適用するだけです。私は....いいえ「publish_action」権限を追加しましたが、同じ結果を得た

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); // this line is required 
} 
+0

はそれだけで私はあなたのコードをコンパイルしている – GMX

+1

をanithing確認せずに次の活動(リーダーボード)に進み、要求されています。 onActivityResultの部分だけが欠けていました。インテント機能をしばらく無効にし、registerCallbackのonSuccessメソッドでToastを追加し、Toastが呼び出されているかどうかを確認します。また、onCreateメソッド内でonActivityResultメソッドを宣言していないことを確認してください。その場合、onActivityResultの上の@Overrideアノテーションでエラーが発生します。 –

+0

私は、新しいアクティビティコールをキャンセルしたときに、許可リクエストを催促しました。だから、私はOnsuccess()メソッドで新しい呼び出しインテントをコピーして貼り付けました。それは正しいことですか?ので、ありがとうbtwありがとう! – GMX

関連する問題