C# WP7上的谷歌访问

C# WP7上的谷歌访问,c#,windows-phone-7,oauth-2.0,C#,Windows Phone 7,Oauth 2.0,我在构建一个可以访问谷歌账户的应用程序时遇到了问题。我有以下代码,用于获取google帐户的登录页面,然后还会显示访问权限页面!。单击“允许访问”后,应用程序将重定向到错误页面。以下是一些截图,以便任何试图提供帮助的人都能更好地理解。。下面是我使用的代码 private void browseGoogle_Loaded(object sender, RoutedEventArgs e) { string address = "https://accounts.googl

我在构建一个可以访问谷歌账户的应用程序时遇到了问题。我有以下代码,用于获取google帐户的登录页面,然后还会显示访问权限页面!。单击“允许访问”后,应用程序将重定向到错误页面。以下是一些截图,以便任何试图提供帮助的人都能更好地理解。。下面是我使用的代码

 private void browseGoogle_Loaded(object sender, RoutedEventArgs e)
    {
        string address = "https://accounts.google.com/o/oauth2/auth" +
        "?client_id=" + "*******.apps.googleusercontent.com" +
        "&scope=" + "https://www.googleapis.com/auth/plus.me" +
        "&response_type=code" +
         "&redirect_uri=" + "https://www.****.com/oauth2callback";

        browseGoogle.Navigate(new Uri(address, UriKind.Absolute));

    }
这是选择/单击“允许访问”后导航到的URI。这是什么意思

这就是我所做的一切。到目前为止,我的BrowserNavigated方法不包含任何代码。我不知道下一步该怎么办,因此寻求帮助。
请帮我解决这个问题。。感谢您的回答和建议。

只需查看GDrive开源应用程序代码即可

授权并向您展示如何使用Google凭据使OAuth登录


下载代码,阅读网站上的预构建说明,并对其进行测试

只需检查GDrive开源应用程序代码即可

 private void browseGoogle_Loaded(object sender, RoutedEventArgs e)
    { 
        try
        {
            StringBuilder autheticateURL = new StringBuilder();
            autheticateURL.Append(GmailSettings.AuthorizeUri).Append("?client_id=").Append(GmailSettings.clientID).Append("&scope=").
                Append(GmailSettings.ScopeValue).Append("&response_type=code").Append("&redirect_uri=").Append(GmailSettings.CallbackUri);
            browseGoogle.Navigate(new Uri(autheticateURL.ToString(), UriKind.Absolute));
        }
        catch (Exception ex)
        {

            Logger.log(TAG, "browseGoogle_Loaded()", ex.Message);

        }
    }

    /// <summary>
    /// Called when the web browser initiates Navigation to various pages 
    /// </summary>
    /// <param name="sender">Browser</param>
    /// <param name="e">Navigating event arguments</param>
    private void browseGoogle_Navigating(object sender, NavigatingEventArgs e)
    {
        try
        {
            string hostName = e.Uri.Host;
            string URL = e.Uri.ToString();

            if (hostName.StartsWith("localhost"))
            {
                NavigationService.Navigate(new Uri("/HomePage.xaml", UriKind.Relative));
            }
        }
        catch (Exception ex)
        {

            Logger.log(TAG, "browseGoogle_Navigating()", ex.Message);

        }
    }
授权并向您展示如何使用Google凭据使OAuth登录

下载代码,阅读网站上的预构建说明,并对其进行测试

private void browseGoogle_加载(对象发送方、路由目标方)
 private void browseGoogle_Loaded(object sender, RoutedEventArgs e)
    { 
        try
        {
            StringBuilder autheticateURL = new StringBuilder();
            autheticateURL.Append(GmailSettings.AuthorizeUri).Append("?client_id=").Append(GmailSettings.clientID).Append("&scope=").
                Append(GmailSettings.ScopeValue).Append("&response_type=code").Append("&redirect_uri=").Append(GmailSettings.CallbackUri);
            browseGoogle.Navigate(new Uri(autheticateURL.ToString(), UriKind.Absolute));
        }
        catch (Exception ex)
        {

            Logger.log(TAG, "browseGoogle_Loaded()", ex.Message);

        }
    }

    /// <summary>
    /// Called when the web browser initiates Navigation to various pages 
    /// </summary>
    /// <param name="sender">Browser</param>
    /// <param name="e">Navigating event arguments</param>
    private void browseGoogle_Navigating(object sender, NavigatingEventArgs e)
    {
        try
        {
            string hostName = e.Uri.Host;
            string URL = e.Uri.ToString();

            if (hostName.StartsWith("localhost"))
            {
                NavigationService.Navigate(new Uri("/HomePage.xaml", UriKind.Relative));
            }
        }
        catch (Exception ex)
        {

            Logger.log(TAG, "browseGoogle_Navigating()", ex.Message);

        }
    }
{ 尝试 { StringBuilder AuthenticateURL=新建StringBuilder(); authenticateURL.Append(GmailSettings.AuthorizeUri).Append(“?client_id=”).Append(GmailSettings.clientID).Append(&scope=”)。 Append(GmailSettings.ScopeValue).Append(“&response\u type=code”).Append(“&redirect\u uri=”).Append(GmailSettings.CallbackUri); 浏览(新Uri(authenticateURL.ToString(),UriKind.Absolute)); } 捕获(例外情况除外) { Logger.log(标记“browseGoogle_Loaded()”,例如Message); } } /// ///当web浏览器启动对各种页面的导航时调用 /// ///浏览者 ///导航事件参数 私有void browseGoogle_导航(对象发送方,导航事件参数e) { 尝试 { 字符串hostName=e.Uri.Host; 字符串URL=e.Uri.ToString(); if(hostName.StartsWith(“localhost”)) { NavigationService.Navigate(新Uri(“/HomePage.xaml”,UriKind.Relative)); } } 捕获(例外情况除外) { Logger.log(标记“browseGoogle_Navigating()”,例如Message); } }
XAML是这样运行的

  <phone:WebBrowser x:Name="browseGoogle" Loaded="browseGoogle_Loaded" IsScriptEnabled="true" Navigating="browseGoogle_Navigating" />

我的错误有两个:- 1) 正如vignesh在他的评论中提到的,我使用了错误的重定向URI。 2) 我的Web浏览器控件中根本没有设置IsScriptEnabled。一旦我把它设置为真,一切都很好。

private void browseGoogle_已加载(对象发送方,RoutedEventArgs e)
{ 
尝试
{
StringBuilder AuthenticateURL=新建StringBuilder();
authenticateURL.Append(GmailSettings.AuthorizeUri).Append(“?client_id=”).Append(GmailSettings.clientID).Append(&scope=”)。
Append(GmailSettings.ScopeValue).Append(“&response\u type=code”).Append(“&redirect\u uri=”).Append(GmailSettings.CallbackUri);
浏览(新Uri(authenticateURL.ToString(),UriKind.Absolute));
}
捕获(例外情况除外)
{
Logger.log(标记“browseGoogle_Loaded()”,例如Message);
}
}
/// 
///当web浏览器启动对各种页面的导航时调用
/// 
///浏览者
///导航事件参数
私有void browseGoogle_导航(对象发送方,导航事件参数e)
{
尝试
{
字符串hostName=e.Uri.Host;
字符串URL=e.Uri.ToString();
if(hostName.StartsWith(“localhost”))
{
NavigationService.Navigate(新Uri(“/HomePage.xaml”,UriKind.Relative));
}
}
捕获(例外情况除外)
{
Logger.log(标记“browseGoogle_Navigating()”,例如Message);
}
}
XAML是这样运行的

  <phone:WebBrowser x:Name="browseGoogle" Loaded="browseGoogle_Loaded" IsScriptEnabled="true" Navigating="browseGoogle_Navigating" />

我的错误有两个:- 1) 正如vignesh在他的评论中提到的,我使用了错误的重定向URI。
2) 我的Web浏览器控件中根本没有设置IsScriptEnabled。一旦我设置为真,一切都很好。

设置为重定向的url是否存在?如果直接导航到该url会发生什么?该url是虚拟的。。这也是我在twitter访问应用程序中使用的URL。。。你认为这是个错误???在这种情况下,应该给出什么重定向URL?或者将redirect_uri参数设置为“urn:ietf:wg:oauth:2.0:oob”,它将导航到google的默认重定向页面。如果您没有网页来处理回调,为什么要在redirect_uri参数中输入它,该参数指定授权后要重定向的页面。如果您没有电子邮件地址,请将其设置为“urn:ietf:wg:oauth:2.0:oob”。编辑您的电子邮件地址(在屏幕截图中可见:),但必须将其设置为右侧??作为客户端设置??我的意思是客户端设置重定向URI和代码中我的重定向URI应该匹配,对吗?设置为重定向URI的url是否存在?如果直接导航到该url会发生什么?该url是虚拟的。。这也是我在twitter访问应用程序中使用的URL。。。你认为这是个错误???在这种情况下,应该给出什么重定向URL?或者将redirect_uri参数设置为“urn:ietf:wg:oauth:2.0:oob”,它将导航到google的默认重定向页面。如果您没有网页来处理回调,为什么要在redirect_uri参数中输入它,该参数指定授权后要重定向的页面。如果您没有电子邮件地址,请将其设置为“urn:ietf:wg:oauth:2.0:oob”。编辑您的电子邮件地址(在屏幕截图中可见:),但必须将其设置为右侧??作为客户端设置??我的意思是客户端设置重定向URI和代码中的重定向URI应该匹配,对吗?它使用相同的c