我最近刚试用Google Apis并且对此非常陌生。我花了最近2个小时搜索如何获取允许访问API的电子邮件以及如何自动刷新令牌。
我的代码与教程
非常相似class GoogleAPI
{
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
static string[] Scopes = { SheetsService.Scope.Spreadsheets };
static string ApplicationName = "Google Sheets API .NET Quickstart";
public GoogleAPI()
{
UserCredential credential;
using (var stream =
new FileStream("Secret.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/Secret_Credentials.json");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define request parameters.
String spreadsheetId = "1Jd9NgmnfvJzPtjXw_jNzSUAlOO532mF6ebYyIIle_H8";
String range = "Sheet1!A:L";
SpreadsheetsResource.ValuesResource.GetRequest request =
service.Spreadsheets.Values.Get(spreadsheetId, range);
ValueRange response = request.Execute();
var a = response;
System.Windows.Forms.MessageBox.Show("success");
}
}
搜索之后,我认为我的令牌会在到期时自动刷新,所以我只留下1个问题。
问题:如何获取保存在凭据中的用户电子邮件。
我真的很陌生,请帮我解释一下它非常详细。
感谢@DaImTo
我终于明白了如何添加它。 他的教程 - > http://www.daimto.com/find-users-email-with-google-api/
使其有效的代码。
首先我们需要添加“电子邮件”作为范围,并记住删除旧凭据。
static string[] Scopes = { SheetsService.Scope.Spreadsheets, "email" };
其次,为google plus创建服务。
// Create Google Plus API service.
var plusService = new PlusService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
最后,收到电子邮件
var me = plusService.People.Get("me").Execute();
var useremail = me.Emails.FirstOrDefault().Value;
答案 0 :(得分:0)
为什么要准确发送电子邮件?
访问令牌允许访问API。刷新令牌将在其到期(1小时)时自动更新访问令牌,这是FileDataStore的功能。
如果我正确读取credPath路径,文件数据存储已将您的凭据保存在%appData%中。
我知道获取当前经过身份验证的用户电子邮件的唯一方法是通过Google+ api People.get发送给我。您需要在请求中添加另一个范围。
如果使用userId值" me",此方法需要身份验证 使用已授予OAuth范围的令牌 https://www.googleapis.com/auth/plus.login或 https://www.googleapis.com/auth/plus.me。了解有关OAuth的更多信息。
代码:
Nuget包:
PM> Install-Package Google.Apis.Plus.v1
代码
var me = plusService.People.Get("me").Execute();
var useremail = me.Emails.FirstOrDefault().Value;