android - Android:Facebook 登录不起作用,没有错误消息
问题描述
我的 facebook 登录不起作用,我可以看到没有错误,我需要一些帮助。这是我单击我的 fb 登录按钮时生成的日志:
2020-10-15 14:43:20.295 25956-26057/dk.swibbid.mz I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
2020-10-15 14:43:20.295 25956-26057/dk.swibbid.mz I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
2020-10-15 14:43:20.562 25956-25956/dk.swibbid.mz D/ViewRootImpl@29bef01[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2020-10-15 14:43:20.563 25956-25956/dk.swibbid.mz D/InputMethodManager: prepareNavigationBarInfo() DecorView@b59fc26[MainActivity]
2020-10-15 14:43:20.563 25956-25956/dk.swibbid.mz D/InputMethodManager: getNavigationBarColor() -855310
2020-10-15 14:43:20.567 25956-25956/dk.swibbid.mz D/InputMethodManager: prepareNavigationBarInfo() DecorView@b59fc26[MainActivity]
2020-10-15 14:43:20.567 25956-25956/dk.swibbid.mz D/InputMethodManager: getNavigationBarColor() -855310
2020-10-15 14:43:20.567 25956-25956/dk.swibbid.mz D/InputMethodManager: startInputInner - Id : 0
2020-10-15 14:43:20.567 25956-25956/dk.swibbid.mz I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
2020-10-15 14:43:20.571 25956-25956/dk.swibbid.mz D/InputTransport: Input channel constructed: fd=91
2020-10-15 14:43:20.571 25956-25956/dk.swibbid.mz D/InputTransport: Input channel destroyed: fd=97
2020-10-15 14:43:20.572 25956-25956/dk.swibbid.mz D/ViewRootImpl@29bef01[MainActivity]: stopped(false) old=false
2020-10-15 14:43:20.579 25956-25956/dk.swibbid.mz D/ViewRootImpl@4c90b3a[FacebookActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
2020-10-15 14:43:20.579 25956-25956/dk.swibbid.mz D/InputMethodManager: prepareNavigationBarInfo() DecorView@1f94c59[FacebookActivity]
2020-10-15 14:43:20.579 25956-25956/dk.swibbid.mz D/InputMethodManager: getNavigationBarColor() -855310
2020-10-15 14:43:20.586 25956-25956/dk.swibbid.mz D/ViewRootImpl@4c90b3a[FacebookActivity]: stopped(true) old=false
2020-10-15 14:43:20.606 25956-26147/dk.swibbid.mz W/libEGL: EGLNativeWindowType 0x770e368010 disconnect failed
2020-10-15 14:43:20.606 25956-26147/dk.swibbid.mz D/OpenGLRenderer: eglDestroySurface = 0x7709bf4300, 0x770e368000
2020-10-15 14:43:20.606 25956-25956/dk.swibbid.mz D/ViewRootImpl@4c90b3a[FacebookActivity]: dispatchDetachedFromWindow
2020-10-15 14:43:20.611 25956-25956/dk.swibbid.mz D/InputTransport: Input channel destroyed: fd=90
2020-10-15 14:43:20.796 25956-25956/dk.swibbid.mz W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getVisibility()' on a null object reference
2020-10-15 14:43:20.796 25956-25956/dk.swibbid.mz W/System.err: at android.view.ViewRootImpl.getHostVisibility(ViewRootImpl.java:1809)
2020-10-15 14:43:20.796 25956-25956/dk.swibbid.mz W/System.err: at android.view.ViewRootImpl.handleAppVisibility(ViewRootImpl.java:1445)
2020-10-15 14:43:20.796 25956-25956/dk.swibbid.mz W/System.err: at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4829)
2020-10-15 14:43:20.796 25956-25956/dk.swibbid.mz W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
2020-10-15 14:43:20.797 25956-25956/dk.swibbid.mz W/System.err: at android.os.Looper.loop(Looper.java:214)
2020-10-15 14:43:20.797 25956-25956/dk.swibbid.mz W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7099)
2020-10-15 14:43:20.797 25956-25956/dk.swibbid.mz W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2020-10-15 14:43:20.797 25956-25956/dk.swibbid.mz W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
2020-10-15 14:43:20.797 25956-25956/dk.swibbid.mz W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
2020-10-15 14:43:33.409 25956-26069/dk.swibbid.mz I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
2020-10-15 14:43:33.409 25956-26069/dk.swibbid.mz I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
2020-10-15 14:45:01.023 25956-25956/dk.swibbid.mz D/ViewRootImpl@29bef01[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1
2020-10-15 14:45:01.024 25956-25956/dk.swibbid.mz D/InputMethodManager: prepareNavigationBarInfo() DecorView@b59fc26[MainActivity]
2020-10-15 14:45:01.024 25956-25956/dk.swibbid.mz D/InputMethodManager: getNavigationBarColor() -855310
2020-10-15 14:45:03.034 25956-25956/dk.swibbid.mz D/ViewRootImpl@29bef01[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1
2020-10-15 14:45:03.034 25956-25956/dk.swibbid.mz D/InputMethodManager: prepareNavigationBarInfo() DecorView@b59fc26[MainActivity]
2020-10-15 14:45:03.035 25956-25956/dk.swibbid.mz D/InputMethodManager: getNavigationBarColor() -855310
上面的空指针错误不适用于我的代码,必须是 facebook 活动中的内容。这是我的片段中的代码:
class LoginFragment : BaseFragment() {
lateinit var callbackManager : CallbackManager
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_login_initial, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
toolbarSetup()
setHasOptionsMenu(true)
setOnClickListeners()
callbackManager = CallbackManager.Factory.create()
login_facebook.setOnClickListener {
login_real_facebook.performClick()
}
login_real_facebook.setReadPermissions("email", "public_profile")
login_real_facebook.registerCallback(callbackManager, object :
FacebookCallback<LoginResult> {
override fun onSuccess(loginResult: LoginResult) {
Log.d("fb", "facebook:onSuccess:$loginResult")
handleFacebookAccessToken(loginResult.accessToken)
}
override fun onCancel() {
Log.d("fb", "facebook:onCancel")
// ...
}
override fun onError(error: FacebookException) {
Log.d("fb", "facebook:onError", error)
// ...
}
})
}
private fun handleFacebookAccessToken(token: AccessToken) {
Log.d("fb", "handleFacebookAccessToken:$token")
val credential = FacebookAuthProvider.getCredential(token.token)
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(requireActivity()) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d("fb", "signInWithCredential:success")
findNavController().navigateUp()
} else {
// If sign in fails, display a message to the user.
Log.w("fb", "signInWithCredential:failure", task.exception)
Toast.makeText(
requireContext(), "Authentication failed.",
Toast.LENGTH_SHORT
).show()
}
}
}
private fun setOnClickListeners() {
login_create.setOnClickListener {
findNavController().navigate(R.id.action_loginFragment_to_registerFragment)
}
login_swibbid.setOnClickListener {
findNavController().navigate(R.id.action_loginFragment_to_loginSwibbidFragment)
}
}
private fun toolbarSetup() {
toolbarService.nothingVisible()
myToolbar.navigationIcon = null
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager.onActivityResult(requestCode, resultCode, data)
}
}
我已经设置了哈希,所以不能这样,这是我使用的依赖项:
implementation 'com.facebook.android:facebook-login:8.0.0'
我也尝试过使用较旧的,但它仍然没有区别同样的错误。
解决方案
堆栈跟踪说有些东西是null
,所以请检查 toobarService 不是null
或您更改可见性的任何其他元素
推荐阅读
- oracle - 存储过程中的异常处理不正确。
- javascript - Dynamics 365 中的 Web 资源 - 由 ClientGlobalContext.js.aspx 加载的 jQuery 破坏的 Kendo UI
- c# - 什么时候必须指定根节点来反序列化xml?
- javascript - 从另一个模态打开一个模态,而不关闭第一个
- ios - 如何添加通知以通知用户 firebase tableview 已更新?
- jquery - 从 HREF 获取 .load 的 URL
- ruby - 更改 CSV 文件中某些列的标题
- java - 为什么Java在重载方法时会这样?
- c++ - 无法读取文本文件中的每个单词
- angular - 带有模板元素参考的Angular2 +输入元素未更新