Java 未调用登录Facebook registerCallback
以下是我的onCreate方法:Java 未调用登录Facebook registerCallback,java,android,facebook,facebook-javascript-sdk,Java,Android,Facebook,Facebook Javascript Sdk,以下是我的onCreate方法: @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_social_login); init(); hideActiveSocialNetworks(); FacebookSdk.sdkInitialize(getApplicationContext());
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_social_login);
init();
hideActiveSocialNetworks();
FacebookSdk.sdkInitialize(getApplicationContext());
CallbackManager callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// not called
Log.d("fb_login_sdk", "callback success");
}
@Override
public void onCancel() {
// not called
Log.d("fb_login_sdk", "callback cancel");
}
@Override
public void onError(FacebookException e) {
// not called
Log.d("fb_login_sdk", "callback onError");
}
});
final Activity activity = this;
findViewById(R.id.fb_login_sdk).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("fb_login_sdk", "click");
List<String> perm = new ArrayList<String>();
perm.add("user_friends");
LoginManager.getInstance().logInWithReadPermissions(activity, perm);
}
});
}
@覆盖
创建时受保护的void(捆绑){
super.onCreate(bundle);
setContentView(R.layout.activity\u social\u登录);
init();
hideActiveSocialNetworks();
sdkinInitialize(getApplicationContext());
CallbackManager CallbackManager=CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
//不打电话
Log.d(“fb_登录_sdk”,“回调成功”);
}
@凌驾
公开作废{
//不打电话
Log.d(“fb_登录_sdk”,“回调取消”);
}
@凌驾
公共无效onError(FaceBook例外e){
//不打电话
Log.d(“fb_登录_sdk”,“回调onError”);
}
});
最终活动=此;
findviewbyd(R.id.fb_login_sdk).setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.d(“fb_登录_sdk”,“单击”);
List perm=new ArrayList();
永久添加(“用户朋友”);
LoginManager.getInstance().logInWithReadPermissions(活动,perm);
}
});
}
登录后,不会激发onSuccess()、onCancel()和onError()方法
文档:在我的活动中缺少以下内容:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
当您将其添加到活动类时,您的代码将起作用
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
以下是检查Facebook Sdk设置是否正确的检查清单:-
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<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>
LoginManager.getInstance()
.logInWithReadPermissions(this, Arrays.asList("public_profile", "email", "user_friends"))
LoginManager.getInstance().registerCallback(fbCallManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(result: LoginResult?) {
//login success
}
override fun onCancel() {
//login cancelled by user
}
override fun onError(error: FacebookException?) {
//login error handle exception
}
})
参考资料:在facebook文档之后,我遇到了完全相同的问题。谢谢你的提问。谢谢!这救了我的命。这个解决方案有效。但是,这怎么可能呢?Facebook没有保持良好的结构。它帮助了我:-),但onActivityResult()如何与LoginManager.registerCallback()链接?只是为了知识?
LoginManager.getInstance()
.logInWithReadPermissions(this, Arrays.asList("public_profile", "email", "user_friends"))
LoginManager.getInstance().registerCallback(fbCallManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(result: LoginResult?) {
//login success
}
override fun onCancel() {
//login cancelled by user
}
override fun onError(error: FacebookException?) {
//login error handle exception
}
})
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
fbCallManager.onActivityResult(requestCode, resultCode, data)
}