如何为Google Contacts API授权控制台应用程序c#

时间:2015-08-10 13:52:38

标签: c# google-api google-contacts

我在Google通讯录中的授权存在问题。 直到六月我的控制台C#应用程序工作。

我已经采取措施获得联系人https://developers.google.com/google-apps/contacts/v3/?hl=en。 我无法得到联系人;我只能访问serviceAccountEmail(xxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com)。

我有2个联系人存储在那里,我只能访问它们。 我希望能够访问我的7000个Gmail联系人。 在C#中有没有这方面的教程? 我发现了分析和日历,但不是联系人。

以下是我的代码:

const string serviceAccountEmail = "xxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com";

            var certificate = new X509Certificate2("grdom-all-xxxxxxxxxxxx.p12", "notasecret",
                X509KeyStorageFlags.Exportable);

            ServiceAccountCredential.Initializer serviceAccountCredentialInitializer =
                new ServiceAccountCredential.Initializer(serviceAccountEmail)
                {
                    Scopes = new[] { "https://www.google.com/m8/feeds/" },
                }.FromCertificate(certificate);

            var credential = new ServiceAccountCredential(serviceAccountCredentialInitializer);
            if (!credential.RequestAccessTokenAsync(CancellationToken.None).Result)
                throw new InvalidOperationException("Access token request failed.");


            var oauthParameters = new OAuth2Parameters()
            {
                AccessToken = credential.Token.AccessToken,
                AccessType = "offline",
                ApprovalPrompt = "force",
            };

            var settings = new RequestSettings("grdom-all", oauthParameters)
            {
                AutoPaging = true,
                UseSSL = true,
            };
            ContactsRequest cr = new ContactsRequest(settings);
            var query = new ContactsQuery(ContactsQuery.CreateContactsUri("default"));
            Feed<Contact> f = cr.GetContacts();
            foreach (Contact entry in f.Entries)
            {
                //do something
            };

0 个答案:

没有答案