Facebook信息不显示

我正在尝试使用此代码获取用户信息,但未在活动中显示配置文件图片和名称未在基础上创建新用户

我错过了什么? 有没有人使用Kotlin编码?

private fun handleFacebookAccessToken(token: AccessToken) { Log.d(TAG, "handleFacebookAccessToken:" + token) val credential = FacebookAuthProvider.getCredential(token.token) App.currentAuth.signInWithCredential(credential) .addOnCompleteListener(this) { Log.d(TAG, "signInWithCredential:success") } .addOnSuccessListener(this) { authResult -> if (authResult != null) { val firebaseUser = authResult.user if (App.database_table_users.child(firebaseUser.uid) == null) { var facebookId = "" firebaseUser.providerData .filter { it.providerId == FacebookAuthProvider.PROVIDER_ID } .forEach { facebookId = it.uid } val photoUrl = "https://graph.facebook.com/$facebookId/picture?width=1024&height=1024" App.database_table_users.child(firebaseUser.uid).setValue( User(firebaseUser.uid, firebaseUser.email.orEmpty(), firebaseUser.displayName.orEmpty(), photoUrl, false ) ) } } } .addOnFailureListener(this) { ex -> if (ex is FirebaseAuthUserCollisionException) { LoginManager.getInstance().logOut() val ad = AlertDialog.Builder(this@LoginActivity) ad.setMessage(getString(R.string.auth_user_collision)) ad.setPositiveButton(getString(R.string.ok), null) ad.show() } else { ex.printStackTrace() } } } 

您必须使用FirebaseAuth.getInstance()而不是App.currentAuth。 例如;

 val mAuth = FirebaseAuth.getInstance() val credential = FacebookAuthProvider.getCredential(token) mAuth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val user = mAuth.currentUser } else { task.exception?.printStackTrace() } } 

试试这对我有用

  private fun loginWithFaceBook() { LoginManager.getInstance().registerCallback(callbackManager, facebookCallBack) LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile","email")) } private val facebookCallBack = object : FacebookCallback<LoginResult> { override fun onSuccess(result: LoginResult?) { val graphRequest = GraphRequest.newMeRequest(result?.accessToken) { _, response -> val graphObject = response.jsonObject val id = if(graphObject.has("id")) graphObject.getString("id") else null val email = if(graphObject.has("email")) graphObject.getString("email") else null val firstName = if(graphObject.has("first_name")) graphObject.getString("first_name") else null val lastName = if(graphObject.has("last_name")) graphObject.getString("last_name") else null val photoUrl = if(graphObject.has("picture")) { val picture : JSONObject = graphObject.getJSONObject("picture") if(picture.has("data") && picture.has("url") && picture.getString("url").isNotBlank()) { picture.getString("url") } else null } else val bundle = Bundle() bundle.putString("fields", "id,first_name,last_name,name,picture,email,gender,birthday,link") graphRequest.parameters = bundle graphRequest.executeAsync() } override fun onError(error: FacebookException) { when{ error.message != null -> showSnackbar(error.message.toString()) } } override fun onCancel() { } }