gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:46:01 24 4
gpt4 key购买 nike

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

我请求的权限是 "public_profile","business_management","re​​ad_insights"

我已经按照这个问题遵循了所有说明,但仍然面临同样的错误
Facebook Android SDK v2.3 Unexpected call to 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 权限更改为高级
  • 将电子邮件权限更改为高级
  • 在 Hex to Base 64 之后,将 firebase 中使用的所有 SHA1 指纹添加到 facebook dev,https://base64.guru/converter/encode/hex
  • 在 list 中添加了 facebook 应用程序 ID,因为 firebase 有自己的 facebook 应用程序 ID,所以我使用了 tools:replace="android:value"关于那个元数据

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

    关于java - 意外调用 LoginManager.onActivityResult Facebook SDK v3.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919986/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com