使用谷歌登录在wp8应用程序中验证用户

本文关键字:应用程序 验证 用户 wp8 谷歌 登录 | 更新日期: 2023-09-27 17:59:49

我想使用用户谷歌登录凭据对我的wp8应用程序中的用户进行身份验证。这样我就可以获得用户的个人资料信息。我在网上找到了两篇源代码文章。但我无法得到我想要的。

我在此链接中找到的第一个代码。但在获得身份验证代码后,它没有任何代码来获取配置文件。可能是我无法理解。

我在这个链接中找到的第二个代码。它遵循mvvm模式,所以我完全没有理解这段代码。

如果有人正确使用了它,请帮助我。在获得客户端id和客户端机密后,我实际上想要的是在应用程序中做什么来获取用户的个人资料信息。感谢您的帮助。提前谢谢。

这是代码

protected override void OnNavigatedTo(NavigationEventArgs e)

base.OnNavigatedTo(e);

IDictionary<string, string> parameters = this.NavigationContext.QueryString;

string authEndpoint = parameters["authEndpoint"];
string clientId = parameters["clientId"];
string scope = parameters["scope"];

string uri = string.Format("{0}?response_type=code&client_id={1}&redirect_uri={2}&scope={3}",
    authEndpoint,
    clientId,
    "urn:ietf:wg:oauth:2.0:oob",
    scope);

webBrowser.Navigate(new Uri(uri, UriKind.Absolute));

}

private async void LayoutRoot_Loaded(object sender, RoutedEventArgs e)

if(!App.loggedin)
{
    OAuthAuthorization authorization = new OAuthAuthorization(
    "https://accounts.google.com/o/oauth2/auth",
    "https://accounts.google.com/o/oauth2/token");
    TokenPair tokenPair = await authorization.Authorize(
        "YOUR_CLIENT_ID",
        "CLIENT_SECRET",
        new string[] { GoogleScopes.UserinfoEmail });

    // Request a new access token using the refresh token (when the access token was expired)
    TokenPair refreshTokenPair = await authorization.RefreshAccessToken(
        "YOUR_CLIENT_ID",
        "CLIENT_SECRET",
        tokenPair.RefreshToken);
}

}

获取访问令牌后该怎么办?

使用谷歌登录在wp8应用程序中验证用户

这是允许您查看配置文件详细信息的代码:

private void LoadProfile(string access_token)
{
    Debug.WriteLine("loading profile");
    RestClient client = new RestClient("https://www.googleapis.com");
    client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(access_token);
    var request = new RestRequest("/oauth2/v1/userinfo", Method.GET);
    client.ExecuteAsync<Profile>(request, ProfileLoaded);
}
private void ProfileLoaded(IRestResponse<Profile> response)
{
    Profile = response.Data;
}

只需传入从以前的代码中获得的access_token,数据就应该包含在response.Data