2

我正在使用 Xamarin 构建一个应用程序作为 Trakt 客户端。为了对用户进行身份验证,我使用 Xamarin.Auth,因为它是跨平台的。但是,身份验证成功后,它不会调用 Completed 事件处理程序。该事件仅在我单击“后退”按钮时才被调用,但它返回一个空帐户对象和错误的 IsAuthenticated。我想知道是不是因为重定向 uri 无效。

请在下面查看我的代码。

[assembly: ExportRenderer(typeof(LoginView), typeof(LoginViewRenderer))]
namespace ShowsCalendar.Droid.ViewRenderer
{
public class LoginViewRenderer : PageRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
    {
        base.OnElementChanged(e);

        var context = Forms.Context;

        var baseAddress = ConfigHelper.TraktAPIURL;
        var auth = new OAuth2Authenticator(
            clientId: ConfigHelper.ClientID,
            redirectUrl: new Uri("urn:ietf:wg:oauth:2.0:oob"),
            scope: "",
            authorizeUrl: new Uri(baseAddress + "/oauth/authorize?response_type=code")
            );
        auth.AllowCancel = true;
        auth.Completed += AuthenticateCompleted;            
        var intent = auth.GetUI(context);
        context.StartActivity(intent);
    }

    private void AuthenticateCompleted(object sender, AuthenticatorCompletedEventArgs e)
    {
        if (!e.IsAuthenticated)
        {
            return;                
        }
        App.AccessToken = e.Account.Properties["access_token"].ToString();
        AccountStore.Create().Save(e.Account, "Trakt");
    }
}

}

4

0 回答 0