2017-03-23 5 views
1
using (var stream = 
       new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) 
      { 
       string credPath = System.Environment.GetFolderPath(
        System.Environment.SpecialFolder.Personal); 
       credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json"); 

       credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets, 
        Scopes, 
        "user", 
        CancellationToken.None, 
        new FileDataStore(credPath, true)).Result; 
       Console.WriteLine("Credential file saved to: " + credPath); 
      } 

hereのこのコードは、アプリケーションの認証を処理し、ユーザーの資格情報ファイルを保存します。ブラウザなしのOAuth-orization

ただし、ブラウザを使用しています。私はどこかで、グーグルが生のユーザー名&のパスワードのチェックをサポートしなくなり、代わりにブラウザを介してユーザーのログインを持っていることを読んだ。

私のC#アプリケーションにブラウザを埋め込むことはできませんし、ブラウザを気にせずに代わりに認証を行ってもいいですか?

答えて

1

のOAuthは許可プロトコルではなく、認証メカニズムです。 Googleの認証は常にブラウザで行われ、埋め込みブラウザではサポートされなくなりました。 https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

ブラウザを使用して毎回ユーザーに確認する必要がないようにするソリューションがあります。具体的には、サービスアカウント(新しいGoogleアカウントを作成してプロキシとして動作させる方法 - https://developers.google.com/identity/protocols/OAuth2ServiceAccountを参照)や、更新トークンをリクエストして保存することができます(ユーザー名とパスワードの保存に似ていますが、ドライブ - How do I authorise an app (web or installed) without user intervention? (canonical ?)を参照してください)。

関連する問題