无法从 C# 中的 google api 令牌验证器获取数据

Posted

技术标签:

【中文标题】无法从 C# 中的 google api 令牌验证器获取数据【英文标题】:Not able to fecth the data from google api token verifier in C# 【发布时间】:2017-03-02 00:22:24 【问题描述】:

我正在使用令牌验证器 google api

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

它给了我浏览器中的用户电子邮件 ID,例如


 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 "email" OAuth scopes to the application.
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"

现在我想从我的后端代码调用这个 URL 并检索邮件 ID 以进行身份​​验证

我试过这样的

function(string access_token)
var url = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=" + access_token;

WebRequest request = WebRequest.Create(url);
 request.Method = "GET";
 using (WebResponse response = request.GetResponse())
 
  using (Stream stream = response.GetResponseStream())
   
    XmlTextReader reader = new XmlTextReader(stream);

   
  

但无法从该 json 中获取数据

还有其他选择吗?

我只需要使用客户端将发送到服务器的 access_token 或 idToken 获取用户的电子邮件 ID。

【问题讨论】:

您为什么使用 XmlTextReader 并希望能够读取 Json? 【参考方案1】:

解决了

var json = new WebClient().DownloadString(url);

使用 WebClient 从浏览器获取数据

反序列化后我得到了数据。

【讨论】:

以上是关于无法从 C# 中的 google api 令牌验证器获取数据的主要内容,如果未能解决你的问题,请参考以下文章

无法从使用 C# 的 API 获得 json 响应

无法获取 Google Analytics API 的 oAuth2 访问令牌

如何从 Google YouTube Data API OAuth 2 iOS 获取刷新令牌

如何从Xamarin Auth-Google获得访问令牌

如何使用用户名和传递以及 SSIS 中的动态令牌从 API 获取数据

无需身份验证令牌即可访问 Google 电子表格 API