소셜 로그인/수업내용
소셜로그인 수업내용 21.07.09 . Facebook 로그인
HappyFrog
2021. 7. 9. 12:11
오늘은 Facebook로그인을 구현할 예정이다.
참고할 링크
https://developers.facebook.com/docs/development/register
페이스북 개발자 문서
https://developers.facebook.com/?locale=ko_KR
Facebook for Developers
Facebook for Developers와 사용자를 연결할 수 있는 코드 인공 지능, 비즈니스 도구, 게임, 오픈 소스, 게시, 소셜 하드웨어, 소셜 통합, 가상 현실 등 다양한 주제를 둘러보세요. 개발자를 교육하고 연
developers.facebook.com
- 우선 페이스북 개발자페이지에서 로그인을 하자.
- '내 앱'을 들어가서 앱을 만들자.
- 게임으로 만들고 앱이름을 정하자.
- 주의할 점은 앱 이름에 'FB', "Facebook" 같이 페이스북을 지칭하는이름이 들어가면 거부된다.
- 앱 만들기.
- 설정 - 기본설정에서 나중에 우리는 앱ID와 시크릿코드가 필요하다. 알아두자.
- 일단 Facebook SDK를 받아주자.
- 문서의 Getting Started 부분에 있다.
- 최신버전으로 받았다.
그리고 해당 SDK를 프로젝트에 import하자.
- import를 시키면 백업이 있냐고 물어보는 창이 뜨는데 진행하자.
- import하면 GPGS때처럼 의존성을 해결해주는 창이 뜬다.
- 사진처럼 완료되면 꺼주자.
- 우선 예제를 보자.
- Build Setting에서 MainMenu와 LogView를 넣어주자.
- SDK에 동봉된 Examples에서 Mainmenu를 실행시켜보았다.
- FB Init을 누르면 버튼들이 활성화된다.(왼쪽)
- Classic Login을 누르면 해당 오른쪽 창이 나온다.
- 여기서 Find Access Token을 하면 해당 창이 뜨는데, 여기서 앱토큰을 이용해서 유저토큰을 만들어야한다.
- 여기서 유저토큰의 '권한을 부여해야합니다'를 눌러러 절차를 진행한다.
- 앱토큰을 기입하고 Generate AccessToken을 하고 로그인을 하면 유저 토큰이생성된다.
- 생성된 유저토큰을 복사하여 유니티에디터에서 가동되고 있는 FB로그인 예제에 붙여넣어주자.
- 그리고 Send Success 클릭.
- 성공했다면 Status : Success가 출력된다.
- 그렇다면 해당 화면처럼 나의 로그가 출력된다.
- JSON형식으로 된 데이터도 보이며 액세스 토큰의 정보, 에러정보, 시간, 날짜등이 출력된다.
- 모든씬을 다 빌드해주자.
- 문서에서는 API레벨을 15이상으로 하라고 했는데, UniWebView랑 쓰는 경우가 잦다보니 21로 설정해주었다.(UniWebView는 21이상 요구)
- 그리고 패키지 이름을 앱이름과 같게 해주었다.
- 핸들러가 뜰 텐데 이 전과 마찬가지로 에러없이 완료되면 꺼주자.
- 그리고 Facebook Settings의 PackageName을 보면 내가 설정한 Package Name으로 바뀌어있을것이다.
- 그리고 개발자페이지의 설정-기본설정에서 아래로 스크롤하여 안드로이드 플랫폼을 추가해준다.
- 추가했다면 다음과같은 화면이 보일텐데 Unity Editor에 있는 FacebookSettings에서 값들을 가져오면 된다.
- 만약 키해시가 생성되지 않는다면 Unity Editor에서 기본값으로 지정한 SDK가 아닌 Android Studio의 SDK를 사용해야한다.
- Android Studio에서는 안드로이드 API레벨을 페이스북이 요구하는 15레벨 이상을 모두 체크한 뒤 Apply를 해준다.
- 이후 모두 설치를 해주자.
- 만약 다음과 같이 OpenSSL오류가 출력된다면 OpenSSL다운받아야한다.
https://code.google.com/archive/p/openssl-for-windows/downloads
Google Code Archive - Long-term storage for Google Code Project Hosting.
code.google.com
- 해당 링크로 들어가서 0.9.8k X64버전을 다운받자.
- 압축을 풀고 C드라이브로 옮겨준다.
- 환경변수를 OpenSSL폴더의 bin폴더로 경로를 잡아주자.
- * 주의 환경변수를 잡고나서는 윈도우를 재부팅 해주는 것이 좋다.
- 그리고 cmd창을 열어 버전이 출력된다면 제대로 경로가 잡힌것이다.
- 그리고 이번엔 Java tool 경로를 잡아달라고 뜰 것이다.
- 그렇다면 JDK의 bin하위에 가서 cmd를 열어 keytool이 되는지를 확인하자.
- 위 사진과 같이 나온다면 해당 bin폴더에서는 keytool실행이 가능하기 때문에 해당 폴더를 환경변수로 잡아주면 된다.
- 잘 잡혔으니 해당 설정값들을 개발자페이지에 할당해주자.
- 그리고 페이지 변경사항 저장을 하고 빌드를 한다.
- 빌드할 때 메인메뉴가 첫번째로 실행되도록 주의하자.
자 이제 만들어보자.
- Facebook - Edit Setting을 누르면 페이스북 세팅이 인스펙터에 나온다.
- AppId가 없다고 나올것이다.
- AppId는 페이스북 개발자페이지의 왼쪽 상단에 노출되어있다.
- 해당 아이디를 기입하고 앱 이름을 우리가 페이지에서 만든 이름으로 바꿔주자.
- 그리고 간단하게 dim과 button UI를 만들어 버튼을 누르면 로그가 출력되게 만들어보자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Facebook.Unity;
public class App : MonoBehaviour
{
public Button btnLogin;
List<string> perms = new List<string>() { "public_profile", "email" };
void Awake()
{
if (!FB.IsInitialized)
{
// Initialize the Facebook SDK
FB.Init(InitCallback, OnHideUnity);
}
else
{
// Already initialized, signal an app activation App Event
FB.ActivateApp();
}
}
private void InitCallback()
{
if (FB.IsInitialized)
{
// Signal an app activation App Event
FB.ActivateApp();
// Continue with Facebook SDK
// ...
}
else
{
Debug.Log("Failed to Initialize the Facebook SDK");
}
}
private void OnHideUnity(bool isGameShown)
{
if (!isGameShown)
{
// Pause the game - we will need to hide
Time.timeScale = 0;
}
else
{
// Resume the game - we're getting focus again
Time.timeScale = 1;
}
}
private void AuthCallback(ILoginResult result)
{
if (FB.IsLoggedIn)
{
// AccessToken class will have session details
var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
// Print current access token's User ID
Debug.Log(aToken.UserId);
// Print current access token's granted permissions
foreach (string perm in aToken.Permissions)
{
Debug.Log(perm);
}
}
else
{
Debug.Log("User cancelled login");
}
void Start()
{
this.btnLogin.onClick.AddListener(() =>
{
Debug.Log("Facebook Login");
FB.LogInWithReadPermissions(perms, AuthCallback);
});
}
}
}
- 버튼을 제대로 만들었다면 코드를 다음과 같이 작성하고 실행해보자.
- 그리고 빌드를 하여 APK를 돌려보자.
- 로그인화면이 뜨고 로그인을 하면 다음과 같은 창이 나온다.
- '계속'을 누르면 오른쪽 사진처럼 처음화면으로 돌아온다.