Google 在 ASP.NET 网络应用程序中的用户令牌和授权码
Google's user token and authorization code in an ASP.NET webapplication
您好,我正在尝试制作一个 Web 应用程序,即使用户未连接到该网站,它也可以读取用户的电子邮件。我按照 Google Sign-In for Websites 此处的步骤进行操作,并制作了一个 javascript 登录页面,该页面最终为我提供了授权码,在第 7 步中,他们告诉您将授权码交换为访问令牌通过 xmlhttprequest 将其发送到服务器。我的问题是我不知道如何将代码发送到服务器端,即使我不知道如何使用它来刷新令牌或获取 asp 中的用户数据,我搜索了如何使用 DotNetOpenAuth 但我找不到教程来帮助我解决我的问题。
嗨,你可以这样做:
IAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow(newGoogleAuthorizationCodeFlow.Initializer
ClientSecrets = new ClientSecrets
{
ClientId = "yourClientId",
ClientSecret = "yourClientSecret"
});
TokenResponse response = flow.ExchangeCodeForTokenAsync("", "authorization_code_you_generated_in_client", "postmessage", CancellationToken.None).Result;
这应该会为您提供访问令牌。
仅当您在 javascript 请求中指定 "access_type" : "offline"
时,您才会获得刷新令牌。
您可能还想使用 "approval_prompt" : "force"
再次获取 refresh_token。
您好,我正在尝试制作一个 Web 应用程序,即使用户未连接到该网站,它也可以读取用户的电子邮件。我按照 Google Sign-In for Websites 此处的步骤进行操作,并制作了一个 javascript 登录页面,该页面最终为我提供了授权码,在第 7 步中,他们告诉您将授权码交换为访问令牌通过 xmlhttprequest 将其发送到服务器。我的问题是我不知道如何将代码发送到服务器端,即使我不知道如何使用它来刷新令牌或获取 asp 中的用户数据,我搜索了如何使用 DotNetOpenAuth 但我找不到教程来帮助我解决我的问题。
嗨,你可以这样做:
IAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow(newGoogleAuthorizationCodeFlow.Initializer
ClientSecrets = new ClientSecrets
{
ClientId = "yourClientId",
ClientSecret = "yourClientSecret"
});
TokenResponse response = flow.ExchangeCodeForTokenAsync("", "authorization_code_you_generated_in_client", "postmessage", CancellationToken.None).Result;
这应该会为您提供访问令牌。
仅当您在 javascript 请求中指定 "access_type" : "offline"
时,您才会获得刷新令牌。
您可能还想使用 "approval_prompt" : "force"
再次获取 refresh_token。