如何在没有oauth对话的情况下获得gmail联系?

时间:2015-07-23 10:25:46

标签: c# oauth gmail

我正在开发Windows应用程序。我使用以下代码获得gmail联系。 但在这种情况下,我必须登录并接受浏览器表单(GoogleLoginForm)的许可。 我想跳过这个" oauth对话框"。

我已经提到了堆栈溢出和谷歌开发人员的几乎链接。但是我没有得到很多帮助。反正有没有跳过浏览器的权限?

请建议。

这是我的主要表格。

string SCOPE = "https://www.google.com/m8/feeds/ https://apps-apis.google.com/a/feeds/groups/";
string REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
OAuth2Parameters parameters = new OAuth2Parameters();
parameters.ClientId = CLIENT_ID;
parameters.ClientSecret = CLIENT_SECRET;
parameters.RedirectUri = REDIRECT_URI;
parameters.Scope = SCOPE;

string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Uri loginUri = new Uri(url);

GoogleLoginForm objForm = new GoogleLoginForm(loginUri);
DialogResult result= objForm.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
     parameters.AccessCode = objForm._OAuthVerifierToken;
}

OAuthUtil.GetAccessToken(parameters);
RequestSettings reqSettings = new RequestSettings("myapplication", parameters) { AutoPaging = true };
ContactsRequest contReq = new ContactsRequest(reqSettings);
Feed<Google.Contacts.Contact> Contacts = contReq.GetContacts();

我通过以下代码获得AccessCode。

    public GoogleLoginForm(Uri url)
    {
        InitializeComponent();
        _loginUri = url;
    }

    public GoogleLoginForm(Uri loginUri)
    {
        // TODO: Complete member initialization
        this._loginUri = loginUri;
    }
    private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        string fullPath = e.Url.ToString();
        WebBrowser control = sender as WebBrowser;
        if (control != null && !string.IsNullOrEmpty(control.DocumentTitle) && control.DocumentTitle.Contains("Success code"))
        {
            _OAuthVerifierToken = control.DocumentTitle.Replace("Success code=", "");
            DialogResult = DialogResult.OK;
        }
    }

    private void GoogleLoginForm_Load(object sender, EventArgs e)
    {
        webBrowser1.Url = _loginUri;
    }

0 个答案:

没有答案