Java Android Facebook登录回调永远不会触发

Java Android Facebook登录回调永远不会触发,java,android,facebook-login,android-facebook,facebook-sdk-4.0,Java,Android,Facebook Login,Android Facebook,Facebook Sdk 4.0,我使用facebook登录按钮创建了一个活动,并在onCreate方法中注册了回调。现在,当我按下“登录”按钮并通过facebook登录时,我希望我的回调会被触发,但事实并非如此。我做错了什么 CallbackManager callbackManager; LoginButton loginButton; @Override protected void onCreate(Bundle savedInstanceState) { Faceboo

我使用facebook登录按钮创建了一个活动,并在onCreate方法中注册了回调。现在,当我按下“登录”按钮并通过facebook登录时,我希望我的回调会被触发,但事实并非如此。我做错了什么

    CallbackManager callbackManager;
    LoginButton loginButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        FacebookSdk.sdkInitialize(getApplicationContext());

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.setReadPermissions("user_friends");
        callbackManager = CallbackManager.Factory.create();

        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), "Cancelled!", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(FacebookException e) {
                Toast.makeText(getApplicationContext(), "Error!", Toast.LENGTH_LONG).show();
            }
        });
    }
CallbackManager CallbackManager;
登录按钮登录按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
sdkinInitialize(getApplicationContext());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(“用户朋友”);
callbackManager=callbackManager.Factory.create();
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
Toast.makeText(getApplicationContext(),“Success!”,Toast.LENGTH\u LONG.show();
}
@凌驾
公开作废{
Toast.makeText(getApplicationContext(),“Cancelled!”,Toast.LENGTH_LONG.show();
}
@凌驾
公共无效onError(FaceBook例外e){
Toast.makeText(getApplicationContext(),“Error!”,Toast.LENGTH_LONG.show();
}
});
}

因为您正在发布回调不起作用的代码

  • 我假设您已经在facebook开发者控制台上创建了一个项目,获得了开发哈希值,并且状态设置为public

  • 您的应用程序清单具有应用程序id的元数据标记

  • 接下来,在您的代码中,在活动中添加一个activityresult(),并将其转发给您的callbackManager。()

    如果登录成功,LoginResult参数将具有新的AccessToken以及最近授予或拒绝的权限

    登录成功不需要registerCallback,您可以选择使用下面描述的AccessTokenTracker类跟踪当前访问令牌的更改

    然后在onActivityResult()中,将登录结果转发到onCreate()中创建的callbackManager:


    我也面临同样的问题。请检查您是否已在清单文件中添加以下内容:

    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
    

    Facebook活动开始了吗?您需要将其添加到清单中,并检查onActivityResult的
    方法!是的,我看到facebook窗口,在那里我授予我的应用权限。我应该给ActivityResult添加什么?@LeonardoFerrari omg我是弱智。非常感谢。现在可以了,没问题!将您的解决方案作为答案发布,这样您就可以在将来帮助他人!
    
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
    
    <string name="fb_login_protocol_scheme">fbAPP_ID</string>