繁体   English   中英

意外调用 LoginManager.onActivityResult Facebook SDK v3.2

[英]Unexpected call to LoginManager.onActivityResult Facebook SDK v3.2

我正在将 Facebook 登录集成到我的 Android 应用程序中,当我单击“登录”按钮并允许所需的权限时,它会意外调用 LoginManager.onActivityResult

我请求的权限是“public_profile”、“business_management”、“read_insights”

我已经按照这个问题遵循了所有说明,但仍然面临同样的错误
Facebook Android SDK v2.3 意外调用 LoginManager.onActivityResult

public class FacebookLogIn extends AppCompatActivity implements View.OnClickListener {

    private static final String TAG = "FacebookLogIn";
    private List<String> permissions = Arrays.asList("public_profile","business_management","read_insights");
    private CallbackManager callbackManager;
    ViewPager viewPagerFragment;
    SplashViewPagerAdapter viewPagerAdapter;
    Button btnLogin;
    FrameLayout frameLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log_in);
        viewInIt();
        viewPagerSetUp();
        doAuth();

        //automatically logIn if access Token available and not expired else perform doAuth().
        AccessToken accessToken = MyTokens.getAccessToken();
        boolean isLoggedIn = accessToken != null && !accessToken.isExpired() && accessToken.getPermissions().contains("read_insights") && accessToken.getPermissions().contains("business_management");
        if (isLoggedIn){
            //if access token not expired and permission granted then start AppSelection Activity
            startActivity(new Intent(FacebookLogIn.this, AppSelection.class));
            //and close the current activity
            finish();
        }
    }

    private void viewInIt(){
        btnLogin=findViewById(R.id.btnFbLogin);
        btnLogin.setOnClickListener(this);
    }


/*
--------------------------------------Login button------------------------------------------------------
 */
    @Override
    public void onClick(View v) {
        LoginManager.getInstance().logInWithReadPermissions(this, permissions);
    }

    private void doAuth() {

        //callbackManager for facebook logIn
        callbackManager = CallbackManager.Factory.create();


        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

                    @Override
                    public void onSuccess(LoginResult loginResult) {

                        //start AppSelection Activity
                        startActivity(new Intent(FacebookLogIn.this,AppSelection.class));
                        //and close the current activity
                        finish();
                    }

                    @Override
                    public void onCancel() {
                    }

                    @Override
                    public void onError(FacebookException exception) {
exception.printStackTrace();
                    }
                });
    }

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

当按下登录按钮允许权限时,我收到此错误代码

W/System.err: Unexpected call to LoginManager.onActivityResult
W/System.err:     at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:232)
        at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:174)
W/System.err:     at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:91)
        at com.greenlab.audiencenetwork.FacebookLogIn.onActivityResult(FacebookLogIn.java:110)
        at android.app.Activity.dispatchActivityResult(Activity.java:7121)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4175)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4222)
        at android.app.ActivityThread.-wrap20(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1581)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6238)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

我有同样的错误,并做了很多直到它起作用,但是我可能无法具体说明修复它的原因,但它可能不是代码。 我最好的猜测是您需要将您的开发帐户验证为个人或企业帐户https://developers.facebook.com/docs/development/release/individual-verification正如所写,更改立即生效,所以当我收到电子邮件时我的帐户已成功验证,我去了我的应用程序,尝试了 oAuth,它奏效了。

我会指出我所做的其他事情:

  • 将 public_profile 权限更改为高级
  • 将电子邮件权限更改为高级
  • 将 firebase 中使用的所有 SHA1 指纹添加到 facebook dev,在 Hex 到 Base 64 之后, https://base64.guru/converter/encode/hex
  • 在清单中添加了 facebook 应用程序 id,因为 firebase 有自己的 facebook 应用程序 id,我在元数据上使用了tools:replace="android:value"

因此,无论是全部还是其中之一,我都鼓励您查看列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM