Facebook SDK 登录回调永远不会被称为 android
Posted
技术标签:
【中文标题】Facebook SDK 登录回调永远不会被称为 android【英文标题】:Facebook SDK Login callback is never called android 【发布时间】:2016-05-04 12:26:53 【问题描述】:我在我的 android 应用中使用以下代码 sn-p 来允许用户使用 Facebook 登录我的应用:
public class FacebookLoginActivity extends AppCompatActivity
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(this.getApplicationContext());
initCallback();
LoginManager.getInstance().logInWithReadPermissions(this, FacebookUtils.requiredPermissions);
private void initCallback()
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>()
@Override
public void onSuccess(LoginResult loginResult)
AccessToken.setCurrentAccessToken(loginResult.getAccessToken());
@Override
public void onCancel()
@Override
public void onError(FacebookException exception)
);
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data)
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
但是,它不起作用,因为从未调用过定义的回调方法,我看到了 facebook 加载程序,并且我到达了 onActivityResult 但从未调用过回调,有人知道可能是什么问题吗?提前致谢。
【问题讨论】:
您想在进入此活动后立即登录 Facebook,还是在点击按钮时登录? @HelloWorld 不,点击自定义按钮,而不是 facebook sdk 登录按钮 这只是一个检查它是否正常工作并且没有达到定义的回调的例子 您是否在清单中授予权限? @VivekMishra 我在清单中添加了以下内容: 【参考方案1】:试试下面的代码:
public class FacebookLoginActivity extends AppCompatActivity
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(this.getApplicationContext());
callbackManager = CallbackManager.Factory.create();
initCallback();
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickLinew View.OnClickListener()
@Override
public void onClick(View v)
// add this on facebook sign in button click listener
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile","email"));
);
private void initCallback()
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>()
@Override
public void onSuccess(LoginResult loginResult)
AccessToken.setCurrentAccessToken(loginResult.getAccessToken());
@Override
public void onCancel()
@Override
public void onError(FacebookException exception)
);
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data)
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
【讨论】:
但这和我发布的 sn-p 完全一样,除了登录请求在我已经尝试过但没有成功的点击侦听器内.. 它与 OP 有何不同。LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile","email"));
在侦听器之外添加此代码对我来说在按钮单击时起作用,确实如此。【参考方案2】:
试试这个步骤。
为LoginButton
创建新的Variable
,在全局范围内定义它。
private LoginButton btnLogin;
然后在您的onCreate
上添加此代码。
btnLogin.setReadPermissions(Arrays.asList("public_profile, email, user_birthday"));
callbackManager = CallbackManager.Factory.create();
也改变这个。
LoginManager.getInstance().registerCallback(callbackManager,
到此。
btnLogin.registerCallback(callbackManager,
【讨论】:
我应该在 onClickListener 中做什么? btnLogin 也是 null 我应该分配给它什么 @EyadMhanna 为登录按钮分配 xml 中的任何 ID。 你能解释一下什么新的 Logcat 不能工作或者和 OP 有同样的问题吗? 和以前一样的行为,回调没有被调用,因此我无法更新访问令牌 查看此链接以供参考,这将对您有所帮助devexchanges.info/2015/11/…以上是关于Facebook SDK 登录回调永远不会被称为 android的主要内容,如果未能解决你的问题,请参考以下文章
iOS:最新的 Parse SDK PFFacebookUtils 块永远不会被执行
解析:[PFFacebookUtils reauthorizeUser:] 回调永远不会被调用
ios facebook swift sdk 共享对话框永远不会返回成功
Facebook ios sdk 3.10 openActiveSessionWithReadPermissions 不使用网络登录回调