# Facebook SDK for Unity - Examples
The Unity Code Examples for the Facebook SDK guide explains Unity code examples for initializing the SDK, implement Facebook Login, share to Facebook, and App Event Logging.
## Initialize the SDK {#init}
Use [`FB.Init` to initialize](https://developers.facebook.com/documentation/unity/reference/current/FB.Init) the Facebook SDK for Unity. Consider using the [Awake function](http://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html) from Unity's Monobehavior class as a starting place. In the callback from `FB.Init`, check [`FB.IsInitialized`](https://developers.facebook.com/documentation/unity/reference/current/Properties#IsInitialized) to verify `FB.Init` succeeded and if so, make a call to [`FB.ActivateApp`](https://developers.facebook.com/documentation/unity/reference/current/FB.ActivateApp) to signal an app activation.
```
// Include Facebook namespace
using Facebook.Unity;
// Awake function from Unity's MonoBehavior
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;
}
}
```
## Facebook Login {#login}
Use [`FB.LogInWithReadPermissions`](https://developers.facebook.com/documentation/unity/reference/current/FB.LogInWithReadPermissions) to prompt the user to login with Facebook, requesting the `public_profile` and `email` permissions. In the callback, check [`FB.IsLoggedIn`](https://developers.facebook.com/documentation/unity/reference/current/Properties#IsLoggedIn) to see if the login succeeded and if so, print information about the logged in session from the current [`AccessToken`](https://developers.facebook.com/documentation/unity/reference/current/Properties#AccessToken).
```
var perms = new List<string>(){"public_profile", "email"};
FB.LogInWithReadPermissions(perms, AuthCallback);
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");
}
}
```
## Express Login
Use the [`FB.Android.RetrieveLoginStatus`](https://developers.facebook.com/documentation/unity/reference/current/FB.Android.RetrieveLoginStatus) to automatically log a user into your app when the user switches to a different device or platform. The user must be logged into Facebook on the device and must have previously logged into your app.
```unity
FB.Android.RetrieveLoginStatus(LoginStatusCallback);
private void LoginStatusCallback(ILoginStatusResult result) {
if (!string.IsNullOrEmpty(result.Error)) {
Debug.Log("Error: " + result.Error);
} else if (result.Failed) {
Debug.Log("Failure: Access Token could not be retrieved");
} else {
// Successfully logged user in
// A popup notification will appear that says "Logged in as <User Name>"
Debug.Log("Success: " + result.AccessToken.UserId);
}
}
```
## Share to Facebook {#sharing}
Use [`FB.ShareLink`](https://developers.facebook.com/documentation/unity/reference/current/FB.ShareLink) to give the user an opportunity to share content to Facebook.
```
FB.ShareLink(
new Uri("https://developers.facebook.com/"),
callback: ShareCallback
);
private void ShareCallback (IShareResult result) {
if (result.Cancelled || !String.IsNullOrEmpty(result.Error)) {
Debug.Log("ShareLink Error: "+result.Error);
} else if (!String.IsNullOrEmpty(result.PostId)) {
// Print post identifier of the shared content
Debug.Log(result.PostId);
} else {
// Share succeeded without postID
Debug.Log("ShareLink success!");
}
}
```
## Log an App Event {#appevent}
Use [`FB.LogAppEvent`](https://developers.facebook.com/documentation/unity/reference/current/FB.LogAppEvent) to log the completion of a step in your tutorial.
```
var tutParams = new Dictionary<string, object>();
tutParams[AppEventParameterName.ContentID] = "tutorial_step_1";
tutParams[AppEventParameterName.Description] = "First step in the tutorial, clicking the first button!";
tutParams[AppEventParameterName.Success] = "1";
FB.LogAppEvent (
AppEventName.CompletedTutorial,
parameters: tutParams
);
```
View these events in [Facebook Events Manager](https://www.facebook.com/events_manager2).