Facebook权限对话框不会提示

问题描述:

我正在创建一个Android应用程序,要求用户提供此权限:默认登录权限+ user_friends + publish_action。Facebook权限对话框不会提示

在我的第一个活动中,我做了Login +询问“user_friends”权限并且工作得很好。

现在在我的第二个活动中,我想要在AlertDialog选择后请求“publish_action”权限。 的问题是,我从未promped为“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”请求不工作,我不知道为什么,有人可以帮助我吗?谢谢你的建议

在onActivityResult中处理你的回调管理器。只需应用此代码即可。

@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

我加入,但得到了同样的结果....没有“publish_action”权限已请求,它只是继续到下一个活动(横幅广告)不问anithing – GMX

+1

我编写的代码。只有这个缺少的是onActivityResult部分。暂时禁用您的意图功能,在registerCallback的onSuccess方法中添加Toast,并查看是否正在调用Toast。另外,确保你没有在onCreate方法中声明onActivityResult方法。在这种情况下,您会在onActivityResult上方的@Override注释中看到错误。 –

+0

我试过了,当我取消新的Activity调用时,它提示权限请求罚款!所以现在我复制并粘贴了Onsuccess()方法中的新调用Intent。 IT WORK是否是正确的方法?因为似乎很感谢btw! – GMX