Ich möchte Benutzer mit Facebook Login mit AWS Cognito Unity SDK authentifizieren.Wie authentifiziere ich mich mit Facebook ID mit AWS Cognito?
Dies ist mein Code:
void Start()
{
InitCognito();
}
public void InitCognito()
{
UnityInitializer.AttachToGameObject (this.gameObject);
credentials = new CognitoAWSCredentials (
identity_pool_id, // Identity Pool ID
region // Region
);
Debug.Log ("identity_pool_id = " + identity_pool_id + " region = " + region);
credentials.GetIdentityIdAsync(delegate(AmazonCognitoIdentityResult<string>
result) {
if (result.Exception != null) {
Debug.LogError(result.Exception.ToString());
}
string identityId = result.Response;
Debug.Log("identityId = "+identityId);
FBInit();
});
}
public void FBInit()
{
FB.Init(this.OnInitComplete, this.OnHideUnity);
Debug.Log("FB.Init() called with " + FB.AppId);
}
public void FBLogin()
{
FB.LogInWithReadPermissions(new List<string>() { "public_profile", "email", "user_friends" }, this.HandleResult);
}
private void OnInitComplete()
{
Debug.Log("Success - Check log for details");
Debug.Log("Success Response: OnInitComplete Called\n");
Debug.Log(string.Format(
"OnInitCompleteCalled IsLoggedIn='{0}' IsInitialized='{1}'",
FB.IsLoggedIn,
FB.IsInitialized));
if (AccessToken.CurrentAccessToken != null)
{
Debug.Log("Access token = "+AccessToken.CurrentAccessToken.ToString());
}
FBLogin();
}
private void OnHideUnity(bool isGameShown)
{
Debug.Log("Success - Check log for details");
Debug.Log(string.Format("Success Response: OnHideUnity Called {0}\n", isGameShown));
Debug.Log("Is game shown: " + isGameShown);
}
protected void HandleResult(IResult result)
{
if (result == null)
{
Debug.Log("Null Response\n");
return;
}
// Some platforms return the empty string instead of null.
if (!string.IsNullOrEmpty(result.Error))
{
Debug.Log("Error - Check log for details");
Debug.Log("Error Response:\n" + result.Error);
}
else if (result.Cancelled)
{
Debug.Log ("Cancelled - Check log for details");
Debug.Log("Cancelled Response:\n" + result.RawResult);
}
else if (!string.IsNullOrEmpty(result.RawResult))
{
Debug.Log ("Success - Check log for details");
Debug.Log ("Success Response:\n" + result.RawResult);
Debug.Log ("Access Token = "+AccessToken.CurrentAccessToken);
Debug.Log ("Access Token = "+AccessToken.CurrentAccessToken.TokenString);
Debug.Log ("Access User Id =" + AccessToken.CurrentAccessToken.UserId);
credentials.AddLogin ("graph.facebook.com", AccessToken.CurrentAccessToken.TokenString);
if (credentials.CurrentLoginProviders.Length > 0) {
Debug.Log (credentials.CurrentLoginProviders[0]);
}
Debug.Log (credentials.GetCachedIdentityId());
}
else
{
Debug.Log ("Empty Response\n");
}
}
Wenn die InitCognito()
Methode ausgeführt wird, erhalte ich eine nicht autorisierte Identität Id (wenn ich neu installieren Sie diese App auf dem gleichen Gerät, die unberechtigte Identität Id Änderungen). Dann kann ich die Facebook-Benutzer-ID und das Token erfolgreich erhalten.
Nach dem Cognito Developer Guide verwende ich credentials.AddLogin()
, um Facebook Login hinzuzufügen. Aber nachdem diese Methode ausgeführt wurde, zeigt Debug.Log (credentials.GetCachedIdentityId())
, dass die Identitäts-ID dieselbe wie die unautorisierte Identitäts-ID ist, keine spezifische ID, die auf die Facebook-ID verweist und die AWS Cognito-Konsole zeigt, dass es keine "verknüpfte Anmeldung" gibt. Benutzt ich credentials.AddLogin()
falsch?
Danke!