Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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# 在拥有获取profiledata的访问令牌后调用Google API_C#_Oauth_Google Api - Fatal编程技术网

C# 在拥有获取profiledata的访问令牌后调用Google API

C# 在拥有获取profiledata的访问令牌后调用Google API,c#,oauth,google-api,C#,Oauth,Google Api,我对OAuth Arena和Google ApI非常陌生,但我在这里尝试实现的是非常简单的 用户单击Google Connect按钮,my webservice应该能够从Google server获取所有用户配置文件信息: 我已经编写了获取AccessToken的代码(我还没有对它进行测试),但假设它工作正常,现在我应该如何要求GoogleAPI给我提供用户配置文件?我确实在GoogleConsumer类中看到了名为GetContacts的静态函数,但我没有看到任何获取profiledata的选

我对OAuth Arena和Google ApI非常陌生,但我在这里尝试实现的是非常简单的

用户单击Google Connect按钮,my webservice应该能够从Google server获取所有用户配置文件信息:

我已经编写了获取AccessToken的代码(我还没有对它进行测试),但假设它工作正常,现在我应该如何要求GoogleAPI给我提供用户配置文件?我确实在GoogleConsumer类中看到了名为GetContacts的静态函数,但我没有看到任何获取profiledata的选项。也许我遗漏了什么

以下是我获取accessToken时使用的代码:

IConsumerTokenManager tokenManager = 
                              new LocalTokenManager(consumerKey,consumerSecret);
var googleConsumer = 
               new WebConsumer(GoogleConsumer.ServiceDescription, tokenManager);
var tokenResult = googleConsumer.ProcessUserAuthorization();
return tokenResult.AccessToken;

现在,我如何从中获取用户配置文件

一旦您拥有了访问令牌(访问类型脱机;并且设置了范围/权限以便获取用户信息),您可以尝试以下操作(未测试,如果出现任何错误,请通知我):

string userInfo=”“;
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(action);
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();
StreamReader sr=新的StreamReader(resp.GetResponseStream());
用户信息=”https://www.googleapis.com/oauth2/v1/userinfo?access_token=“+”您的访问令牌“;
高级关闭();
JObject jsonResp=JObject.Parse(userInfo);
字符串信息=”;
信息+=“”+jsonResp.Root[“名称”]+“”;
信息+=“
”; info+=“
ID:”+jsonResp.Root[“ID”]; 信息+=”
电子邮件:“+jsonResp.Root[“电子邮件”]; info+=“
已验证的电子邮件:“+jsonResp.Root[“已验证的电子邮件”]; info+=“
给定名称:”+jsonResp.Root[“给定名称”]; info+=“
家族名称:”+jsonResp.Root[“家族名称”]; 信息+=”
链接:“+jsonResp.Root[“链接”]; info+=“
性别:”+jsonResp.Root[“性别”]; 回复。写(信息);

流程:使用访问令牌请求google userinfo url,获取响应并显示信息。

让我知道您对使用此处描述的get方法访问配置文件的google信息有何看法? 这是我的C#示例

string url谷歌=”https://www.googleapis.com/plus/v1/people/me";
HttpWebRequest client=HttpWebRequest.Create(urlgool)作为HttpWebRequest;
client.Method=“GET”;
client.Headers.Add(“授权”、“承载人”+accessToken);
使用(HttpWebResponse=(HttpWebResponse)client.GetResponse())
{
使用(Stream dataStream=response.GetResponseStream())
{
使用(StreamReader=新StreamReader(数据流))
{
if(response.StatusCode==HttpStatusCode.OK)
{
var json=新的JavaScriptSerializer();
var data=json.Deserialize(reader.ReadToEnd());

//……在这里的数据中,你有配置文件的所有json字段
大家好,我不知道为什么enyone没有触及这个问题。如果我缺少任何信息,请告诉我。基本上,看到所有这些网络消费者(谷歌消费者和推特消费者)让我感到惊讶拥有像getContacts、UpdateStatus和PostBlog这样的复杂功能,但没有像GetProfile这样的基本功能。我在网上看到的所有示例都是通过调用Google的webservice URL获取USerprofile,但我没有看到任何演示如何使用GoogleWebConsume检索USerprofile的内容。只是不可能?没有回答你的问题?好吧,这篇文章说我们可以使用as作用域。这个作用域到底在哪里应用?我在RequestAuthorization调用中使用它吗?因为我尝试使用这个URL,但它不带字符串参数。嗯,我现在没有mu visual studio,我将在一个小时左右后尝试,但我只是想这样做让您知道我在web服务环境中,而不是在web应用程序环境中。这是否有效?如果用户已经登录(因为他们应该是因为您有访问令牌),那么应该没问题。只需再次检查您是否有登录用户,以及是否设置了所有作用域/权限。让我知道。我认为您的代码非常有用,一旦我有了accessToken,我就可以使用它。我实际上正在处理获取请求令牌的逻辑(稍微落后于计划).一旦我实施,我会让您不断更新。很高兴它能帮助您,如果您遇到困难,请告诉我。干杯buddy@MarcUberstein您发送给HttpWebRequest的“操作”是什么?您的代码段似乎格式不正确。您可能希望删除一些缩进。
string userInfo = "";

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(action);
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        StreamReader sr = new StreamReader(resp.GetResponseStream());
        userInfo = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + "YOUR_ACCESSTOKEN";
        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"];
            info += "<br/>Verified_email : " + jsonResp.Root["verified_email"];
            info += "<br/>Given_name : " + jsonResp.Root["given_name"];
            info += "<br/>Family_name : " + jsonResp.Root["family_name"];
            info += "<br/>Link : " + jsonResp.Root["link"];
            info += "<br/>Gender : " + jsonResp.Root["gender"];

Response.Write(info);