Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从令牌c获取用户信息#_C#_.net_Oauth_Dotnetopenauth - Fatal编程技术网

C# 从令牌c获取用户信息#

C# 从令牌c获取用户信息#,c#,.net,oauth,dotnetopenauth,C#,.net,Oauth,Dotnetopenauth,我已经通过Google提供商的api成功地获得了上述oauth身份验证的密钥令牌 让我们考虑 XXXX-XXX-XXXX-XXXXX具有范围的“访问令牌” 现在,当我用访问令牌访问浏览器以检索用户信息时,值 https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxxii-xxxxx-xxx-xxxxx-xxxxx; 我得到的回应是 { "id": "XXXXXXXXXXXXXX", "name": "XXXXXXXXXXXX

我已经通过Google提供商的api成功地获得了上述oauth身份验证的密钥令牌

让我们考虑 XXXX-XXX-XXXX-XXXXX具有

范围的<强>“访问令牌”<强> 现在,当我用访问令牌访问浏览器以检索用户信息时,值

https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxxii-xxxxx-xxx-xxxxx-xxxxx;
我得到的回应是

{
 "id": "XXXXXXXXXXXXXX",
 "name": "XXXXXXXXXXXXXXXX",
 "given_name": "XXXXXXXXXXX",
 "family_name": "X",
 "picture": "XXXXXXXXXX/photo.jpg",
 "locale": "en"
}
我的问题是,当我通过代码解析上述请求时,我在通过浏览器时并没有得到响应

我使用的代码是

String userInfo = "https://www.googleapis.com/oauth2/v1/userinfo?access_token="+token;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(userInfo);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());

sr.Close();

JObject jsonResp = JObject.Parse(userInfo);
string info = "";
info += "<h3>" + jsonResp.Root["name"] + "</h3>";
info += "<img src='" + jsonResp.Root["picture"] + "' width='120'/><br/>";
info += "<br/>ID : " + jsonResp.Root["id"];
info += "<br/>Email : " + jsonResp.Root["email"];

Response.Write(info);  
作为

分析值h时遇到意外字符。第1行,位置1

堆栈跟踪:

位于Newtonsoft.Json.JsonTextReader.ParseValue(Char currentChar) 在Newtonsoft.Json.JsonTextReader.ReadInternal()上 在Newtonsoft.Json.JsonTextReader.Read()上 位于Newtonsoft.Json.Linq.JObject.Load(JsonReader) 位于Newtonsoft.Json.Linq.JObject.Parse(字符串Json) 位于d:\Oauth\WebSite3\Default.aspx.cs中的\u Default.getresponse(字符串标记):第99行


等待您的宝贵建议和意见

使用此代码获取用户信息:

var userInfoUrl = "https://www.googleapis.com/oauth2/v1/userinfo"; 
var hc = new HttpClient();
hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
var response = hc.GetAsync(userInfoUrl).Result;
dynamic userInfo = response.Content.ReadAsAsync().Result;
return userInfo;

有一篇关于dotnetopenoauth和google api集成的好文章:

您正在解析url
userInfo
,而不是响应
sr
@Caramiriel我从src得到了nul响应您可以检查
HttpWebResponse resp
并将您的发现添加到问题中吗?可能它返回HTTP 404或500状态。您可以共享上述方法的参考dll名称吗?它们都是.net:System.net.HTTP.dll的一部分
var userInfoUrl = "https://www.googleapis.com/oauth2/v1/userinfo"; 
var hc = new HttpClient();
hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
var response = hc.GetAsync(userInfoUrl).Result;
dynamic userInfo = response.Content.ReadAsAsync().Result;
return userInfo;