1. 페이스 북에 가입
2. facebook for developer 에 앱 등록
3. 앱 기본설정에서 패키지 이름, 클래스 이름, 키 해시를 적어줘야하는데
유니티의 페이스북 세팅에서 확인할 수 있음
openssl이 없으면 해시값이 안보임
여기서 윈도우 용으로 다운받고
https://sourceforge.net/projects/openssl/
압축을 C: 에다 풀어줌
그리고 bin폴더까지 환경변수 설정을 해주고
config파일까지 만듦
https://blog.naver.com/PostView.nhn?blogId=baekmg1988&logNo=221454486746
설치되면 이렇게 나오는데
유니티 껐다 켜면 보여야하지만 안보여서
커맨드에
keytool -exportcert -keystore "키스토어까지 경로" -storepass android -keypass android | openssl sha1 -binary | openssl base64
입력해주면 키해시값이 나옴 (마지막 = 까지 28자)
그걸 입력해줌
4. 빌드 세팅에 이 씬들을 등록하는데 mainmenu를 가장 위에 놓음
main menu 를 실행하고
FB. Init을 눌러줌
그리고 로그인이 활성화되면 로그인을 눌러줌
find access token 을 눌러줌
그러면 유저 토큰과 앱 토큰을 얻을 수 있는데 (페북 계정 새로 판 유저는 1시간 기다려야함 ...ㅠㅠ)
유저 토큰에서 오른쪽 끝 디버그버튼을 누르면 토큰을 전부 볼 수 있음
그걸 복사해서
user access token에 붙여주고 send success를 누름
아까 그 main 화면에서 맨위 로그에 success가 나옴
이러면 로그인 준비가 된거임
전체 코드
페이스북 로그인, 로그아웃, 프로필 이름, 프로필 사진 가져오기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Button btnSignIn;
public Button btnSignOut;
public Text text;
public Text username;
public Image userimage;
// Start is called before the first frame update
void Start()
{
FBManager.GetInstance().Init();
this.btnSignIn.onClick.AddListener(() =>
{
FBManager.GetInstance().SignIn((result) =>
{
if(result == FBManager.eSignInResult.LOGGED_IN)
{
this.text.text = "facebook 연결";
FBManager.GetInstance().GetName((name) =>
{
this.username.text = name;
});
FBManager.GetInstance().GetPicture((texture) =>
{
this.userimage.sprite = Sprite.Create(texture, new Rect(0, 0, 50, 50), new Vector2());
});
}
});
});
this.btnSignOut.onClick.AddListener(() =>
{
FBManager.GetInstance().SignOut();
this.text.text = "facebook 로그아웃";
this.username.text = "";
this.userimage.sprite = null;
});
}
}
gpgs랑 비슷하지만 유저 이름과 사진을 가져오려면 graph api 를 알아야한다고 함
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Facebook.Unity;
using Facebook.Unity.Example;
using System;
using Newtonsoft.Json;
public class FBManager
{
public enum eSignInResult
{
LOGGED_IN,
CANCELLED
}
private static FBManager instance;
private FBManager() { }
public static FBManager GetInstance()
{
if (FBManager.instance == null)
{
FBManager.instance = new FBManager();
}
return FBManager.instance;
}
public void Init()
{
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;
}
}
public void SignIn(System.Action<eSignInResult> onComplete)
{
var perms = new List<string>() { "public_profile", "email" };
FB.LogInWithReadPermissions(perms, (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);
}
onComplete(eSignInResult.LOGGED_IN); //sign이 되면 callcback을 받음
}
else
{
Debug.Log("User cancelled login");
onComplete(eSignInResult.CANCELLED);
}
});
}
public void SignOut()
{
FB.LogOut();
}
public void GetPicture(System.Action<Texture2D> onComplete)
{
var aToken = AccessToken.CurrentAccessToken;
var uri = string.Format("{0}/picture", aToken.UserId);
//12345678123568/picture
FB.API(uri, HttpMethod.GET, (result) => {
if (result.Error == null)
{
onComplete(result.Texture);
}
});
}
public void GetName(System.Action<string> onComplete)
{
var aToken = AccessToken.CurrentAccessToken;
var uri = string.Format("{0}/", aToken.UserId);
FB.API(uri, HttpMethod.GET, (result) => {
if (result.Error == null)
{
var json = result.RawResult;
var user = JsonConvert.DeserializeObject<res_user>(json);
onComplete(user.name);
}
});
}
public class res_user
{
public string name;
public string id;
}
}
로그인하면 로그인한 계정의 사진 / 이름 이 보임
'C# > 수업내용' 카테고리의 다른 글
2020.09.09. 수업내용 - 네이버 아이디 로그인 (0) | 2020.09.09 |
---|---|
2020.08.20. 수업내용 - Firebase 연동 (1) (0) | 2020.08.20 |
2020.08.12. 수업내용 - GPGS 연동 +로그인이 안될 때( 계정 로그인 설정 ) (0) | 2020.08.12 |
2020.08.06. 수업내용 - Asset Bundle (0) | 2020.08.06 |
2020.08.05. 수업내용 - NGUI(2) (0) | 2020.08.05 |