Here is script for getting user data like first_name, last_name, gender, email and photo from facebook
you can also get friend data from this...
Here is link to get Unity facebook SDK and more detail process :-
https://developers.facebook.com/docs/unity/gettingstarted
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Facebook.Unity;
public class FBLoginScript : MonoBehaviour {
public Image photo_base;
public Text id_base;
public Text fname_base;
public Text lname_base;
public Text gender_base;
public Text email_base;
void Awake () {
if (!FB.IsInitialized) {
FB.Init(InitCallback, OnHideUnity);
} else {
FB.ActivateApp();
}
}
private void InitCallback ()
{
if (FB.IsInitialized) {
FB.ActivateApp();
} else {
Debug.Log("Failed to Initialize the Facebook SDK");
}
}
private void OnHideUnity (bool isGameShown)
{
if (!isGameShown) {
Time.timeScale = 0;
} else {
Time.timeScale = 1;
}
}
List<string> perms = new List<string>(){"public_profile", "email", "user_friends"};
private void AuthCallback (ILoginResult result) {
if (FB.IsLoggedIn) {
var aToken = Facebook.Unity.AccessToken.CurrentAccessToken;
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");
}
}
public void LogInButton()
{
FB.LogInWithReadPermissions(perms, AuthCallback);
}
public void LogOutButton()
{
FB.LogOut ();
Debug.Log("User logged out");
}
public void GetMailIDButton()
{
FB.API("/me?fields=id,first_name,last_name,gender,email", HttpMethod.GET, graphCallback);
FB.API("/me/picture?type=square&height=128&width=128", HttpMethod.GET, ProfilePhotoCallback);
//FB.API("/me/friends?fields=id,name", HttpMethod.GET, FriendInfoCallback);
FB.API("/me/friends?fields=id,first_name,picture.width(128).height(128)&limit=100", HttpMethod.GET, FriendInfoCallback);
//FB.API("/me?fields=email,friends.limit(10).fields(first_name,id)", HttpMethod.GET, FriendInfoCallback);
}
void FriendInfoCallback(IGraphResult result)
{
Debug.Log("hi= "+result.RawResult);
object dataList;
if (result.ResultDictionary.TryGetValue("data", out dataList))
{
var friendsList = (List<object>)dataList;
CacheFriends(friendsList);
Debug.Log("friendsList= "+Friends);
for(int i=0;i < Friends.Count;i++)
{
Debug.Log(Friends[i]);
}
}
}
public static List<object> Friends;
public static Dictionary<string, Texture> FriendImages = new Dictionary<string, Texture>();
private static void CacheFriends (List<object> newFriends)
{
if (Friends != null && Friends.Count > 0)
{
Friends.AddRange(newFriends);
}
else
{
Friends = newFriends;
}
}
void ProfilePhotoCallback(IGraphResult result)
{
photo_base.sprite = Sprite.Create(result.Texture, new Rect(0, 0, 128, 128), new Vector2(0, 0),125);
}
private void graphCallback(IGraphResult result)
{
Debug.Log("hi= "+result.RawResult);
string id;
string firstname;
string lastname;
string gender;
string email;
if (result.ResultDictionary.TryGetValue("id", out id))
{
id_base.text = "ID = " + id.ToString();
}
if (result.ResultDictionary.TryGetValue("first_name", out firstname))
{
fname_base.text = "firstname= "+firstname.ToString();
}
if (result.ResultDictionary.TryGetValue("last_name", out lastname))
{
lname_base.text = "lastname= "+lastname.ToString();
}
if (result.ResultDictionary.TryGetValue("gender", out gender))
{
gender_base.text = "gender= "+gender.ToString();
}
if (result.ResultDictionary.TryGetValue("email", out email))
{
email_base.text = "email= "+email.ToString();
}
}
}
You can get FB_user_Access token by clicking the "Find Access Token" then paste into field
Click Send Success
Above testing process is for unity editor... you can login directly form your mobile ...
Very helpful.
ReplyDeleteThank you friend