Servicestack Windows通用社交认证

时间:2016-01-19 14:16:21

标签: authentication oauth servicestack

我正在尝试从Windows通用8.1应用程序中的c#客户端实现社交身份验证。当我发布到auth提供商... / googleoauth时,例如客户端失败。 Fiddler显示302重定向,因此反序列化失败了。如果我使用浏览器,身份验证流程可以工作,所以我认为一切都配置正确,但当然可能错过了一些东西。如果有人有任何洞察力或使用c#客户端的社交认证提供程序的例子,将非常感激。 伊恩

2 个答案:

答案 0 :(得分:1)

OAuth流程需要浏览器才能将用户重定向到可以批准访问权限的远程OAuth网站。因此,您需要在WebView中启动网址,然后在用户批准您的应用程序后捕获Session cookies并重定向回您的网站。

TechStacks Auth示例使用Xamarin.Android的Xamarin.Auth组件演示了此策略。

答案 1 :(得分:1)

以防其他人在UWP中寻找样本。这似乎对我有用。大多数情况下,CreateCookieContainer方法只是循环遍历cookie并将它们添加到返回的新容器中。再次感谢@mythz在ServiceStack中的出色工作和支持

            // Grab auth cookies from callback uri
            var cookies = _httpFilter.CookieManager.GetCookies(uri);
            var authCookies = cookies.AsEnumerable().Where(x => new[] {"ss-id", "ss-pid", "ss-opt"}.Contains(x.Name))
                .Select(x => new Cookie(x.Name, x.Value, x.Path, x.Domain)).ToArray();

            string sessionId = null;
            var cookieJar = CreateCookieContainer(authCookies, uri, ref sessionId);

            // Store the tokens for autologin
            await DataServiceFactory.Instance.StoreSingletonSetAsync(authCookies);

            // Set auth on the current client
            _serviceClient.CookieContainer = cookieJar;
            _serviceClient.SessionId = sessionId;