Я получаю сообщение об ошибке или те мобильные телефоны, на которых не установлено приложение FB или установлена облегченная версия. Я не знаю, как обрабатывать обратный вызов, чтобы при нажатии кнопки и открытии chrome и обратно информация в приложении. приложение отлично работает на мобильных телефонах с приложением Facebook. Ошибка или те мобильные телефоны, на которых не установлено приложение FB или установлена облегченная версия.
class MainActivity : AppCompatActivity() {
var a: Int = 1
private lateinit var auth: FirebaseAuth
private lateinit var callbackManager: CallbackManager
lateinit var dialog: ProgressDialog
lateinit var credential: AuthCredential
var user = FirebaseAuth.getInstance().currentUser
val currentUsers = FirebaseAuth.getInstance().currentUser
// val currentUsers = FirebaseAuth.getInstance().currentUser
// var verification:FirebaseUser?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
dialog = ProgressDialog(this)
dialog.setTitle("Welcome...")
dialog.setMessage("Signing in. Please wait!")
auth = FirebaseAuth.getInstance()
FacebookSdk.sdkInitialize(getApplicationContext())
callbackManager = CallbackManager.Factory.create()
printHashKey(this)
// login_button.setReadPermissions("email")
login_button.setOnClickListener {
signIn()
//facebookLogin()
}
signup_btn.setOnClickListener {
intent = Intent(this, SignupActivity::class.java)
startActivity(intent)
}
forget_pas.setOnClickListener {
startActivity(Intent(this, forget_pass::class.java))
}
button.setOnClickListener {
fun View.hideKeyboard() {
val inputManager =
context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputManager.hideSoftInputFromWindow(windowToken, 0)
}
it.hideKeyboard()
if (mail.text.toString().isEmpty() || Tpassword.text.toString().isEmpty()) {
Toast.makeText(this, "Enter your Email and Password", Toast.LENGTH_LONG).show()
} else {
dialog.show()
dialog.setCanceledOnTouchOutside(true)
doLogin()
}
}
}
//Login code
private fun doLogin() {
if (mail.text.toString().isEmpty()) {
mail.error = "Please enter email"
mail.requestFocus()
return
}
if (!Patterns.EMAIL_ADDRESS.matcher(mail.text.toString()).matches()) {
mail.error = "Please enter valid email"
mail.requestFocus()
return
}
if (Tpassword.text.toString().isEmpty()) {
Tpassword.error = "Please enter password"
Tpassword.requestFocus()
return
}
val user = auth.currentUser
auth.signInWithEmailAndPassword(mail.text.toString(), Tpassword.text.toString())
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) { // && user!!.isEmailVerified
val user = auth.currentUser
Log.d("task.isSuccessful)", "task.isSuccessful)")
if (user!!.isEmailVerified) { // || currentUsers == null
startActivity(Intent(this, HomeActivity::class.java))
Log.d("user isEmailVerified", "user isEmailVerified")
dialog.cancel()
}
// startActivity(Intent(this, HomeActivity::class.java))
// finish()
else {
Toast.makeText(this, "Please verify your Email", Toast.LENGTH_LONG).show()
dialog.cancel()
}
} else {
dialog.cancel()
Toast.makeText(
this,
"Error! Verify your email or Enter correct Password",
Toast.LENGTH_LONG
).show()
return@addOnCompleteListener
}
}
}
// public override fun onStart() {
public override fun onResume() {
super.onResume()
// super.onStart()
// val currentUser = auth.currentUser
// if(a==1){}
// var currentUser=FirebaseAuth.getInstance().currentUser
updateUI(user)
}
private fun updateUI(user: FirebaseUser?) {
Log.d("update ui fun", "function of update ui")
FirebaseAuth.getInstance().currentUser?.reload()?.addOnSuccessListener { void ->
// var user = FirebaseAuth.getInstance().currentUser
if (currentUsers != null) {
Log.d("facebook user not null", "updateUI")
// Toast.makeText(this,"Inside of if",Toast.LENGTH_SHORT).show()
// finish()
startActivity(Intent(this, HomeActivity::class.java))
// dialog.show()
} else {
Toast.makeText(this, "do it", Toast.LENGTH_SHORT).show()
Log.d("else", "else updateUI")
}
}
}
//fb code
private fun signIn() { **below line is not working on FB LITE**
login_button.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(result: LoginResult?) {
handleFacebookAccessToken(result?.accessToken)
}
override fun onCancel() {
}
override fun onError(error: FacebookException?) {
Log.d("fb", error.toString())
}
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager.onActivityResult(requestCode, resultCode, data)
}
//facebook code
private fun handleFacebookAccessToken(accessToken: AccessToken?) {
//Get Credentials
credential = FacebookAuthProvider.getCredential(accessToken!!.token)
auth.signInWithCredential(credential)
.addOnCompleteListener(this)
{ task ->
if (task.isSuccessful) {
//Sign in success, update UI with the signed-in user's information
dialog.show()
// if (currentUsers != null) {
// Log.d("fb button"," currentUser!= null")
intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
// updateUI(user)
} else {
// If sign in fails, display a message to the user.
Toast.makeText(
baseContext, "Authentication failed.",
Toast.LENGTH_SHORT
).show()
//updateUI(null)
}
// }
}
}
//forgot_password code
fun forgotPassword(username: EditText) {
if (username.text.toString().isEmpty()) {
return
}
if (!Patterns.EMAIL_ADDRESS.matcher(username.text.toString()).matches()) {
return
}
auth.sendPasswordResetEmail(username.text.toString())
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Toast.makeText(this, "Email sent.", Toast.LENGTH_SHORT).show()
}
}
}
override fun onBackPressed() {
super.onBackPressed()
finishAffinity()
}
fun printHashKey(pContext: Context) {
try {
val info = pContext.getPackageManager()
.getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
for (i in info.signatures) {
val md = MessageDigest.getInstance("SHA");
md.update(i.toByteArray())
val hashKey = String(Base64.encode(md.digest(), 0));
Log.i("hash", "printHashKey() Hash Key: " + hashKey);
}
} catch (e: Exception) {
Log.e("hash", e.printStackTrace().toString());
}
}
}