0

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!

Antwort

0

Das Festlegen des Anmelde-Tokens bedeutet nicht unbedingt, dass das SDK es an den Server sendet. Können Sie versuchen, den folgenden Befehl auszuführen, der es zwingen sollte? Ich vermute der Grund, dass Sie die gleiche Identität sehen, ist, dass es den Server nicht auf die Änderung aktualisiert hat. Es ist aus dem Cognito developer guide gezogen.

credentials.GetIdentityIdAsync(delegate(AmazonCognitoIdentityResult<string> result) { 
    if (result.Exception != null) { 
     //Exception! 
    } 
    string identityId = result.Response; 
}); 
Verwandte Themen