강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của pshoon05265242
pshoon05265242

câu hỏi đã được viết

Tạo bản sao Instagram Android của Howl

Howlstagram Đăng nhập Facebook

페이스북 로그인

Viết

·

351

0

페이스북 로그인버튼을 활용하여 실행하면, 
페이스북 계정을 올바르게 입력하였음에도 다음과 같이 나타나서 문의드립니다.

코드는 아래와 같습니다.

package com.example.howlstagram

import android.content.ContentValues.TAG
import android.content.Intent
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.Bundle
import android.service.controls.ControlsProviderService.TAG
import android.util.Base64
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity
import com.facebook.AccessToken
import com.facebook.CallbackManager
import com.facebook.FacebookCallback
import com.facebook.FacebookException
import com.facebook.login.LoginManager
import com.facebook.login.LoginResult
import com.google.android.gms.auth.api.Auth
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.firebase.auth.FacebookAuthProvider
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.auth.GoogleAuthProvider
import kotlinx.android.synthetic.main.activity_login.*
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException
import java.util.*


class LoginActivity : AppCompatActivity() {
var auth : FirebaseAuth? = null
var googleSignInClient : GoogleSignInClient? = null
var GOOGLE_LOGIN_CODE = 9001
var callbackManager : CallbackManager? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
auth = FirebaseAuth.getInstance()
email_login_button.setOnClickListener {
signinAndSignup()
}
google_sign_in_button.setOnClickListener {
//First Step
googleLogin()
}
facebook_login_button.setOnClickListener {
facebooklogin()
//First Step
}
var gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("284216010288-9grtncojbd715e2b7ud2mkg47g3nttpj.apps.googleusercontent.com")
.requestEmail()
.build()
googleSignInClient = GoogleSignIn.getClient(this,gso)
printHashKey()
callbackManager = CallbackManager.Factory.create()


}
fun printHashKey() {
try {
val info: PackageInfo = packageManager
.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
val hashKey = String(Base64.encode(md.digest(), 0))
Log.i("TAG", "printHashKey() Hash Key: $hashKey")
}
} catch (e: NoSuchAlgorithmException) {
Log.e("TAG", "printHashKey()", e)
} catch (e: Exception) {
Log.e("TAG", "printHashKey()", e)
}
}
fun googleLogin(){
var signInIntent = googleSignInClient?.signInIntent
startActivityForResult(signInIntent,GOOGLE_LOGIN_CODE)
}
fun facebooklogin(){
LoginManager.getInstance() // public profile과 email을 가져옴
.logInWithReadPermissions(this, Arrays.asList("public_profile","email"))
LoginManager.getInstance() // 로그인 성공시 가져오게 되는 부분.
.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(result: LoginResult?) {
// Second Step
handleFacebookAccessToken(result?.accessToken)

//로그인 성공시 데이터를 firebase로
}
override fun onCancel() {
}
override fun onError(error: FacebookException) {
}
})
}
fun handleFacebookAccessToken(token : AccessToken?){
var credential = FacebookAuthProvider.getCredential(token?.token!!)
auth?.signInWithCredential(credential) // firebase로 정보를 넘기는것. google과 동일
?.addOnCompleteListener {
task ->
if (task.isSuccessful) {
//login
//Third Step 응답값을 받아서 정리한다.
moveMainPage(task.result?.user)
} else {
//show the error message
Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show()
}
}
}




override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager?.onActivityResult(requestCode, resultCode,data)
if(requestCode == GOOGLE_LOGIN_CODE){
var result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
if(result.isSuccess){
var account = result.signInAccount
//second step
firebaseAuthWithGoogle(account)
}
}
}
fun firebaseAuthWithGoogle(account : GoogleSignInAccount?){
var credential = GoogleAuthProvider.getCredential(account?.idToken,null)
auth?.signInWithCredential(credential)
?.addOnCompleteListener { task ->
if (task.isSuccessful) {
//login
moveMainPage(task.result?.user)
} else {
//show the error message
Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show()
}
}
}
fun signinAndSignup(){
// 회원가입 하는 코드
auth?.createUserWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString())
?.addOnCompleteListener {
task ->
if(task.isSuccessful){
//creating a user account
moveMainPage(task.result?.user)
}else if(task.exception?.message.isNullOrEmpty()){
//show the error message
Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show()
}else{
//login if you have account
signinEmail()
}


}
}
fun signinEmail(){
auth?.signInWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString())
?.addOnCompleteListener { task ->
if (task.isSuccessful) {
//login
moveMainPage(task.result?.user)
} else {
//show the error message
Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show()
}
}
}
fun moveMainPage(user:FirebaseUser?){
if(user != null){
startActivity(Intent(this, MainActivity::class.java))
}
}
}

 

4강kotlin페이스북android로그인클론코딩

Câu trả lời

Câu hỏi này đang chờ câu trả lời
Hãy là người đầu tiên trả lời!
Hình ảnh hồ sơ của pshoon05265242
pshoon05265242

câu hỏi đã được viết

Đặt câu hỏi