Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 获取Google Plus API的OAuth访问令牌_C#_Windows Phone 7 - Fatal编程技术网

C# 获取Google Plus API的OAuth访问令牌

C# 获取Google Plus API的OAuth访问令牌,c#,windows-phone-7,C#,Windows Phone 7,我目前正在为google plus开发一个应用程序。我想从google plus API获取访问令牌。我想使用OAuth2.0获取访问令牌。我已经构建了一个URL "https://accounts.google.com/o/oauth2/auth?client_id=752264386186- 72f3ef2ok1j3k8g12h7hg8k5kjt9s9si.apps.googleusercontent.com&scope=https: //www.googleapis.com/auth/pl

我目前正在为google plus开发一个应用程序。我想从google plus API获取访问令牌。我想使用OAuth2.0获取访问令牌。我已经构建了一个URL

"https://accounts.google.com/o/oauth2/auth?client_id=752264386186- 72f3ef2ok1j3k8g12h7hg8k5kjt9s9si.apps.googleusercontent.com&scope=https: //www.googleapis.com/auth/plus.me&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code”

当我通过浏览器粘贴到时,会要求使用我的google帐户登录。因此,当我输入凭据时,它会要求“允许访问”或“不感谢”。当我单击“允许访问”时,它会在浏览器中为我提供访问令牌。我想用我的C代码完成上述步骤


如何从代码导航到授权页面,并在身份验证成功后获取访问令牌。我应该使用httpwebrequest、webclient还是rest sharp。还请提供一些示例代码。

如果您可以使用WebBrowser,下面是一个简单的示例,我是如何使用Foursquare API完成同样的工作的。这段代码只是为了测试它是如何运行的,所以我确信它缺少一些重要的东西,比如错误处理等

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        string address =
            "https://foursquare.com/oauth2/authenticate" +
            "?client_id=" + CLIENT_ID +
            "&response_type=token" +
            "&redirect_uri=" + CALLBACK_URI;
        webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
        webBrowser1.Navigate(new Uri(address, UriKind.Absolute));
    }

    void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        response = e.Uri.ToString();
        System.Diagnostics.Debug.WriteLine(e.Uri.ToString());
        if (response.LastIndexOf("access_token=") != -1)
        {
            string token = response.Substring(response.LastIndexOf("#access_token=") + "#access_token=".Length);
            System.Diagnostics.Debug.WriteLine("TOKEN: " + token);
        }
    }
private void按钮1\u单击(对象发送者,路由目标)
{
字符串地址=
"https://foursquare.com/oauth2/authenticate" +
“?客户_id=“+客户_id+
“&响应类型=令牌”+
“&redirect_uri=“+CALLBACK_uri;
webBrowser1.Navigated+=新事件处理程序(webBrowser1\u Navigated);
导航(新Uri(地址,UriKind.Absolute));
}
无效webBrowser1_已导航(对象发送方,System.Windows.Navigation.NavigationEventArgs e)
{
response=e.Uri.ToString();
System.Diagnostics.Debug.WriteLine(e.Uri.ToString());
if(response.LastIndexOf(“access_token=”)!=-1)
{
字符串标记=response.Substring(response.LastIndexOf(“#access_-token=“)+”#access_-token=“.Length”);
System.Diagnostics.Debug.WriteLine(“令牌:+令牌”);
}
}

一旦您允许访问,您最终将获得带有访问令牌的回调URI。请注意,webBrowser1\u Navigated可能会被多次调用(每次您在嵌入式web浏览器中导航到另一个页面时)。

如果您可以使用WebBrowser,下面是我如何使用Foursquare API执行相同操作的简单示例。这段代码只是为了测试它是如何运行的,所以我确信它缺少一些重要的东西,比如错误处理等

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        string address =
            "https://foursquare.com/oauth2/authenticate" +
            "?client_id=" + CLIENT_ID +
            "&response_type=token" +
            "&redirect_uri=" + CALLBACK_URI;
        webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
        webBrowser1.Navigate(new Uri(address, UriKind.Absolute));
    }

    void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        response = e.Uri.ToString();
        System.Diagnostics.Debug.WriteLine(e.Uri.ToString());
        if (response.LastIndexOf("access_token=") != -1)
        {
            string token = response.Substring(response.LastIndexOf("#access_token=") + "#access_token=".Length);
            System.Diagnostics.Debug.WriteLine("TOKEN: " + token);
        }
    }
private void按钮1\u单击(对象发送者,路由目标)
{
字符串地址=
"https://foursquare.com/oauth2/authenticate" +
“?客户_id=“+客户_id+
“&响应类型=令牌”+
“&redirect_uri=“+CALLBACK_uri;
webBrowser1.Navigated+=新事件处理程序(webBrowser1\u Navigated);
导航(新Uri(地址,UriKind.Absolute));
}
无效webBrowser1_已导航(对象发送方,System.Windows.Navigation.NavigationEventArgs e)
{
response=e.Uri.ToString();
System.Diagnostics.Debug.WriteLine(e.Uri.ToString());
if(response.LastIndexOf(“access_token=”)!=-1)
{
字符串标记=response.Substring(response.LastIndexOf(“#access_-token=“)+”#access_-token=“.Length”);
System.Diagnostics.Debug.WriteLine(“令牌:+令牌”);
}
}

一旦您允许访问,您最终将获得带有访问令牌的回调URI。请注意,webBrowser1\u Navigated可能会被称为多个(每次您在嵌入式web浏览器中导航到另一个页面时)。

此代码是史诗般的,简直令人惊叹。

此代码是史诗般的,简直令人惊叹。

网络上有OAuth 2.0 SDK,您会发现的问题是,它们的设计意图是允许用户确认交易。你不会很幸运地避开这一部分。我可以参考任何链接或示例代码吗?将其显示在嵌入式WebBrowser控件中,作为其预期用途,侦听导航事件,并查找我试图从导航事件参数e.uri.fragment获取访问令牌的令牌,但其为空。因此,我们希望使用回调对象获取访问令牌。我需要一些帮助来使用HttpWebRequest从google获取访问令牌。网络上有OAuth 2.0 SDK,您会发现的问题是,它们的设计意图是允许用户确认交易。你不会很幸运地避开这一部分。我可以参考任何链接或示例代码吗?将其显示在嵌入式WebBrowser控件中,作为其预期用途,侦听导航事件,并查找我试图从导航事件参数e.uri.fragment获取访问令牌的令牌,但其为空。因此,我们希望使用回调对象获取访问令牌。我需要一些帮助来使用HttpWebRequest从google获取访问令牌。对不起,我有一个问题,什么是“响应”类型。当我声明响应为HttpWebResponse类型时,它会抛出一个错误。它是从e.Uri.ToString()获取的字符串。不过最好使用e.Uri.AbsoluteUri.抱歉,我有一个问题,什么是“响应”类型。当我声明响应为HttpWebResponse类型时,它会抛出一个错误。它是从e.Uri.ToString()获取的字符串。不过最好使用e.Uri.AbsoluteUri。请将您的评论放在评论区,而不是答案中。…!!::)请将您的评论放在评论区,而不是答案中!!:)