If you want to write your own provider please see the section at the bottom of this page.
Each provider may specify configuration options that are unique. Any of these unique options are documented here and must be provided during strategy creation. See the API Documentation for all other options.
scope
: No default scopeconfig
: not applicableauth
: https://www.arcgis.com/sharing/rest/oauth2/authorizetoken
: https://www.arcgis.com/sharing/rest/oauth2/token
The default profile response will look like this:
credentials.profile = {
provider: 'arcgisonline',
orgId: profile.orgId,
username: profile.username,
displayName: profile.fullName,
name: {
first: profile.firstName,
last: profile.lastName
},
email: profile.email,
role: profile.role,
raw: profile
};
scope
: not applicableconfig
: not applicabletemporary
: https://bitbucket.org/api/1.0/oauth/request_tokenauth
: https://bitbucket.org/api/1.0/oauth/authenticatetoken
: https://bitbucket.org/api/1.0/oauth/access_token
The default profile response will look like this:
credentials.profile = {};
credentials.profile.id = profile.user.username;
credentials.profile.username = profile.user.username;
credentials.profile.displayName = profile.user.first_name + (profile.user.last_name ? ' ' + profile.user.last_name : '');
credentials.profile.raw = profile;
scope
: No default scopeconfig
: not applicableauth
: https://www.dropbox.com/1/oauth2/authorizetoken
: https://api.dropbox.com/1/oauth2/token
The default profile response will look like this:
// default profile response from dropbox
scope
: Defaults to['email']
config
: not applicableauth
: https://www.facebook.com/v2.3/dialog/oauthtoken
: https://graph.facebook.com/v2.3/oauth/access_token
The default profile response will look like this:
credentials.profile = {
id: profile.id,
username: profile.username,
displayName: profile.name,
name: {
first: profile.first_name,
last: profile.last_name,
middle: profile.middle_name
},
email: profile.email,
raw: profile
};
scope
: No default scopeconfig
: not applicableauth
: https://foursquare.com/oauth2/authenticatetoken
: https://foursquare.com/oauth2/access_token
The default profile response will look like this:
credentials.profile = {
id: profile.id,
displayName: profile.firstName + ' ' + profile.lastName,
name: {
first: profile.firstName,
last: profile.lastName
},
email: profile.contact.email,
raw: profile
};
scope
: Defaults to['user:email']
config
:uri
: Point to your github enterprise uri. Defaults tohttps://github.com
.
auth
: /login/oauth/authorizetoken
: /login/oauth/access_token
The default profile response will look like this:
credentials.profile = {
id: profile.id,
username: profile.login,
displayName: profile.name,
email: profile.email,
raw: profile
};
You must also enable the Google+ API in your profile. Go to APIs & Auth, then APIs and under Social APIs click Google+ API and enable it.
scope
: Defaults to['profile', 'email']
config
: not applicableauth
: https://accounts.google.com/o/oauth2/v2/authtoken
: https://www.googleapis.com/oauth2/v4/token
The default profile response will look like this:
credentials.profile = {
id: profile.id,
displayName: profile.displayName,
name: profile.name,
emails: profile.emails,
raw: profile
};
scope
: Defaults to['basic']
config
:extendedProfile
: Boolean that determines if extended profile information will be fetched
auth
: https://api.instagram.com/oauth/authorizetoken
: https://api.instagram.com/oauth/access_token
The default profile response will look like this:
credentials.profile = {
id: params.user.id,
username: params.user.username,
displayName: params.user.full_name,
raw: params.user
};
// if extendedProfile is true then raw will have access to all the information
scope
: Defaults to['r_basicprofile', 'r_emailaddress']
config
: not applicableauth
: https://www.linkedin.com/uas/oauth2/authorizationtoken
: https://www.linkedin.com/uas/oauth2/accessToken
The default profile response will look like this:
credentials.profile = {
id: profile.id,
name: {
first: profile.firstName,
last: profile.lastName
},
email: profile.email,
headline: profile.headline,
raw: profile
};
You can request additional profile fields by setting the fields
option of providerParams
. All possible fields are described in the Basic Profile Fields documentation (see an example on this page under Requesting additional profile fields).
Here is an example of a custom strategy configuration:
providerParams: {
fields: ':(id,first-name,last-name,positions,picture-url,picture-urls::(original),email-address)'
}
scope
: Defaults to['basic']
config
: not applicableauth
: https://secure.meetup.com/oauth2/authorizetoken
: https://secure.meetup.com/oauth2/access
The default profile response will look like this:
// Defaults to meetup response (http://www.meetup.com/meetup_api/docs/2/member/#get)
scope
: Defaults to['wl.basic', 'wl.emails']
config
: not applicableauth
: https://login.live.com/oauth20_authorize.srftoken
: https://login.live.com/oauth20_token.srf
The default profile response will look like this:
credentials.profile = {
id: profile.id,
username: profile.username,
displayName: profile.name,
name: {
first: profile.first_name,
last: profile.last_name
},
email: profile.emails && (profile.emails.preferred || profile.emails.account),
raw: profile
};
scope
: No default scopeconfig
: not applicableauth
: https://home.nest.com/login/oauth2token
: https://api.home.nest.com/oauth2/access_token
The default profile response will look like this:
// According to the official docs, no user data is available via the Nest
// OAuth service. Therefore, there is no `profile`.
scope
: Defaults to['whoami']
config
:uri
: URI of phabricator instance
auth
: /oauthserver/auth/token
: /oauthserver/token/
The default profile response will look like this:
credentials.profile = {
id: profile.result.phid,
username: profile.result.userName,
displayName: profile.result.realName,
email: profile.result.primaryEmail,
raw: profile
};
scope
: Defaults to['identity']
config
: not applicableauth
: https://www.reddit.com/api/v1/authorizetoken
: https://www.reddit.com/api/v1/access_token
The default profile response will look like this:
// Defaults to reddit response
scope
: not applicableconfig
:extendedProfile
: Request for more profile information
temporary
: 'https://api.twitter.com/oauth/request_token'auth
: https://api.twitter.com/oauth/authenticatetoken
: https://api.twitter.com/oauth/access_token
The default profile response will look like this:
credentials.profile = {
id: params.user_id,
username: params.screen_name
};
// credentials.profile.raw will contain extendedProfile if enabled
scope
: No default scopeconfig
: not applicableauth
: https://oauth.vk.com/authorizetoken
: https://oauth.vk.com/access_token
The default profile response will look like this:
credentials.profile = {
id: profile.uid,
displayName: profile.first_name + ' ' + profile.last_name,
name: {
first: profile.first_name,
last: profile.last_name
},
raw: profile
};
scope
: not applicableconfig
: not applicabletemporary
: https://api.login.yahoo.com/oauth/v2/get_request_tokenauth
: https://api.login.yahoo.com/oauth/v2/request_authtoken
: https://api.login.yahoo.com/oauth/v2/get_token
The default profile response will look like this:
credentials.profile = {
id: profile.profile.guid,
displayName: profile.profile.givenName + ' ' + profile.profile.familyName,
name: {
first: profile.profile.givenName,
last: profile.profile.familyName
},
raw: profile
};
scope
: not applicabletemporary
: https://www.tumblr.com/oauth/request_tokenauth
: https://www.tumblr.com/oauth/authorizetoken
: https://www.tumblr.com/oauth/access_token
The default profile response will look like this:
credentials.profile = {
username: profile.response.user.name,
raw: profile.response.user
};
// credentials.profile.raw will contain extendedProfile if enabled
When writing a new provider see existing implementations (in lib/providers
) for reference as well as any documentation provided by your provider. You may want to support uri
or extendedProfile
options depending on your needs.