【问题标题】:How to authenticate with Facebook Id using AWS Cognito?如何使用 AWS Cognito 使用 Facebook Id 进行身份验证?
【发布时间】:2016-10-04 07:13:50
【问题描述】:

我想使用 AWS Cognito Unity SDK 通过 Facebook 登录对用户进行身份验证。

这是我的代码:

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");
    }


}

InitCognito() 方法被执行时,我得到了一个未经授权的身份ID(一旦我在同一台设备上重新安装了这个应用程序,未经授权的身份ID就会改变)。然后我就可以成功获取 Facebook 的用户 id 和令牌了。

按照 Cognito 开发人员指南,我使用 credentials.AddLogin() 添加 Facebook 登录。但在执行此方法后,Debug.Log (credentials.GetCachedIdentityId()) 显示身份 ID 与未经授权的身份 ID 相同,而不是引用 Facebook ID 的特定 ID,并且 AWS Cognito 控制台显示没有“链接登录”。我是否以错误的方式使用credentials.AddLogin()

谢谢!

【问题讨论】:

    标签: facebook amazon-web-services unity3d aws-sdk amazon-cognito


    【解决方案1】:

    设置登录令牌并不一定意味着 SDK 将其发送到服务器。您可以尝试运行以下命令,这应该强制执行吗?我猜您看到相同身份的原因是它没有更新服务器以进行更改。它是从 Cognito developer guide 中提取的。

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

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 2018-05-22
      • 1970-01-01
      • 2021-04-28
      • 2019-06-19
      • 2019-10-04
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多