0

DriveService私はオブジェクトを承認しました。許可されたユーザーのメールを取得する方法はありますか? 表示名は取得できますが、メールアドレスは取得できません。

OAuth2Authenticator auth = new OAuth2Authenticator<NativeApplicationClient>(provider, client => GetAuthorization(client));

DriveService service = new DriveService(
    new BaseClientService.Initializer()
        {
            Authenticator = auth
        }
    );

Console.WriteLine(service_.About.Get().Fetch().User.DisplayName);

GetAuthorization関数はブラウザを開き、ユーザーが認証できるようにします。

private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
{
    IAuthorizationState state = new AuthorizationState(new[]
    {
        "https://www.googleapis.com/auth/drive",
        "https://www.googleapis.com/auth/drive.file",
        "https://www.googleapis.com/auth/drive.metadata.readonly",
        "https://www.googleapis.com/auth/drive.readonly"
    });

    state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);

    using (LoginWindow login = new LoginWindow(arg.RequestUserAuthorization(state).ToString()))
    {
        if (login.ShowDialog() == DialogResult.OK)
        {
            return arg.ProcessUserAuthorization(login.AuthorizationToken, state);
        }
    }

    throw new UnauthorizedAccessException();
}

前もって感謝します。

4

3 に答える 3

0
  1. スコープを追加します: https://www.googleapis.com/auth/userinfo.profile
  2. 次のコードを使用します。

    private string FetchUsersEmail()
    {
        var emailRequest = @"https://www.googleapis.com/userinfo/email?alt=json&access_token=" + GoogleAccessToken;
        string jsonString;
        var request = WebRequest.Create(emailRequest);
    
        using (var response = (HttpWebResponse)request.GetResponse())
        using (var dataStream = response.GetResponseStream())
        using (var reader = new StreamReader(dataStream))
        {
            jsonString = reader.ReadToEnd();
        }
    
        var json = JToken.Parse(jsonString);
        var currentGoogleEmail = json["data"]["email"].Value<string>();
    
        return currentGoogleEmail;
    }
    

    Newtonsoft を使用して json を解析していますが、他のライブラリを使用することもできます。

于 2013-10-26T06:01:10.263 に答える