我正在尝试使用ASP .NET Core(c#)中的Google API创建google联系人。但是,它引发了如下异常:
对gmail的写访问被拒绝。
我正在使用https://www.google.com/m8/feeds/contacts/
进行获取/发布。找不到我想念的地方。
是否可以使用普通的Gmail帐户创建联系人。我应该遵循什么步骤?
预先感谢
答案 0 :(得分:0)
对gmail的写访问被拒绝。
表示您无权写入用户帐户。
Contacts Data API提供两种类型的供稿:联系人供稿和联系人组供稿。
提要是私有的读/写提要,可用于查看和管理用户的联系人/组。由于它们是私有的,因此程序员只能使用经过身份验证的请求来访问它们。也就是说,该请求必须包含要检索其联系人的用户的身份验证令牌。有关身份验证的更多信息,请参见developer's guide。
您可能还需要考虑以下内容。相比使用旧版api,这可能会让您的生活更轻松。
验证示例
private static UserCredential GetUserCredential(string clientSecretJson, string userName, string[] scopes)
{
try
{
if (string.IsNullOrEmpty(userName))
throw new ArgumentNullException("userName");
if (string.IsNullOrEmpty(clientSecretJson))
throw new ArgumentNullException("clientSecretJson");
if (!File.Exists(clientSecretJson))
throw new Exception("clientSecretJson file does not exist.");
// These are the scopes of permissions you need. It is best to request only what you need and not all of them
using (var stream = new FileStream(clientSecretJson, FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/", System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
// Requesting Authentication or loading previously stored authentication for userName
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets,
scopes,
userName,
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
credential.GetAccessTokenForRequestAsync();
return credential;
}
}
catch (Exception ex)
{
throw new Exception("Get user credentials failed.", ex);
}
}