GitHub - AdityaGarg8/git-credential-email: Git credential helpers to get OAauth2 token for Microsoft Outlook, Gmail and Yahoo accounts (original) (raw)

git-credential-email

Git credential helpers to get OAuth2 token for Microsoft Outlook, Gmail and Yahoo accounts.

This repo contains 3 helpers:

They can be used with git send-email, especially when Outlook no longer supports app passwords.

How does this work?

It is a simple python script, based on https://github.com/google/gmail-oauth2-tools/blob/master/python/oauth2.py. It does the following:

Installation

All platforms

Linux

Ubuntu/Debian

Run the following to add the apt repo and install the git-credential-gmail, git-credential-outlook and git-credential-yahoo package:

curl -L "https://github.com/AdityaGarg8/git-credential-email/releases/download/debian/KEY.gpg"
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/git-credential-email.gpg >/dev/null
&& echo "deb [signed-by=/etc/apt/trusted.gpg.d/git-credential-email.gpg]
https://github.com/AdityaGarg8/git-credential-email/releases/download/debian ./"
| sudo tee -a /etc/apt/sources.list.d/git-credential-email.list
&& sudo apt-get update
&& sudo apt-get install -y git-credential-gmail git-credential-outlook git-credential-yahoo

Fedora

Run the following to add the copr repo and install the git-credential-gmail, git-credential-outlook and git-credential-yahoo package:

sudo dnf copr enable -y adityagarg8/git-credential-email sudo dnf install -y git-credential-gmail git-credential-outlook git-credential-yahoo

macOS

Install Homebrew. Then run the following to add the brew tap and install the git-credential-gmail, git-credential-outlook and git-credential-yahoo package:

brew tap adityagarg8/git-credential-email brew install git-credential-gmail git-credential-outlook git-credential-yahoo

Windows

Precompiled binaries for Windows are available. You can download the zip containing them from here. Extract all the contents of the zip in your path. %ProgramFiles%\Git\mingw64\libexec\git-core is also a part of %PATH% when git is installed on Windows. As an example, to install git-credential-gmail on Windows over there, open Command Prompt as administrator and run the following:

curl -L -o %temp%\cred.zip https://github.com/AdityaGarg8/git-credential-email/releases/latest/download/git-credential-gmail_win64.zip tar -xf %temp%\cred.zip -C "%ProgramFiles%\Git\mingw64\libexec\git-core"

Setting up OAuth 2.0 client credentials

In order to use OAuth2.0, you need to provide an OAuth 2.0 client_id and a client_secret (secret not needed in Outlook) to allow the helper to authenticate with email servers on your behalf.

If not configured, it will use Thunderbird's client_id and client_secret by default.

The helpers include the client credentials of the following popular email clients:

In order to set the client credentials of your choice, run (taking git credential-gmail as an example):

git credential-gmail --set-client

Here you can either choose from the pre-configured client credentials, or choose to use your own registered client. Instructions for registering your own client are given below:

In case you want to delete the client credentials you stored and go back to the default behaviour, run:

git credential-gmail --delete-client

Authenticating with your email provider

Gmail

Outlook

Yahoo

Usage

Gmail

[credential "smtp://smtp.gmail.com:587"]
      helper = gmail
[sendemail]
      smtpEncryption = tls
      smtpServer = smtp.gmail.com
      smtpUser = someone@gmail.com # Replace this with your email address.
      smtpServerPort = 587
      smtpAuth = OAUTHBEARER

Outlook

[credential "smtp://smtp.office365.com:587"]
      helper = outlook
[sendemail]
      smtpEncryption = tls
      smtpServer = smtp.office365.com
      smtpUser = someone@outlook.com # Replace this with your email address.
      smtpServerPort = 587
      smtpAuth = XOAUTH2

Yahoo

[credential "smtp://smtp.mail.yahoo.com:587"]
      helper = yahoo
[sendemail]
      smtpEncryption = tls
      smtpServer = smtp.mail.yahoo.com
      smtpUser = someone@yahoo.com # Replace this with your email address.
      smtpServerPort = 587
      smtpAuth = OAUTHBEARER

Note: Make sure you have atleast version 2.1800 of perl's Authen::SASL library in order to be able to use XOAUTH2 and OAUTHBEARER.

Deleting the stored authentication details

In case you want to delete the refresh token, that was stored by the helper, as mentioned here, simply run (taking git credential-gmail as an example):

git credential-gmail --delete-token

Troubleshooting

In case authentication fails:

  1. Try force refreshing the access token by running (taking git credential-gmail as an example):
    git credential-gmail --force-refresh-token
  2. If --force-refresh-token does not work, try authenticating again.

References: