jaredhanson/passport-github

Access token as query parameter is deprecated (cannot fetch emails)

Opened this issue ยท 0 comments

Hi! ๐Ÿ‘‹

Firstly, thanks for your work on this project! ๐Ÿ™‚

Today I used patch-package to patch passport-github@1.1.0 for the project I'm working on.

GitHub has deprecated passing the access token as a query param and it should now be passed in the Authentication field of the headers. (https://developer.github.com/changes/2020-02-10-deprecating-auth-through-query-param/)

Here is the diff that solved my problem:

diff --git a/node_modules/passport-github/lib/strategy.js b/node_modules/passport-github/lib/strategy.js
index 0f4b07f..b036650 100644
--- a/node_modules/passport-github/lib/strategy.js
+++ b/node_modules/passport-github/lib/strategy.js
@@ -135,7 +135,8 @@ Strategy.prototype.userProfile = function(accessToken, done) {
 
     
     if (self._scope && self._scope.indexOf('user:email') !== -1) {
-      self._oauth2._request('GET', self._userProfileURL + '/emails', { 'Accept': 'application/vnd.github.v3+json' }, '', accessToken, function(err, body, res) {
+      self._oauth2.useAuthorizationHeaderforGET(true)
+      self._oauth2.get(self._userProfileURL + '/emails', accessToken, function(err, body, res) {
         if (err) {
           // If the attempt to fetch email addresses fails, return the profile
           // information that was obtained.

This issue body was partially generated by patch-package.