0

我在构建可以访问谷歌帐户的应用程序时遇到问题。我有以下代码可以获取登录页面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));

    }

https://accounts.google.com/o/oauth2/approval?as=634f855389bf10ff&hl=en_GB&xsrfsign=APsBz4gAAAAAUHZvwB3xTqisyv8hEcWem5X3eKvwAHN9 这是选择/单击允许访问后导航到的 URI。这是什么意思?

这都是我在做的。到目前为止,我的 BrowserNavigated 方法不包含任何代码。我不知道该怎么做。因此寻求帮助。请帮我解决这个问题。所有答案和建议表示赞赏。

4

2 回答 2

2

只需在此处查看 GDrive 开源应用程序代码。

Authorization ViewViewModel向您展示了如何使用 Google 凭据进行 OAuth 登录。

下载代码,阅读网站上的预构建说明,然后进行测试!

于 2012-10-11T10:14:35.380 回答
2
 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);

        }
    }

XAML 是这样的

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

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

于 2012-10-11T10:45:26.213 回答