Provider – GitHub

GitHub Sample

Table of contents

How to enable GitHub login in WordPress

1. Create a GitHub App

To be able to log in via GitHub you must create a GitHub app first.

  1. Navigate to https://github.com/settings/developers/
  2. Log in with your GitHub credentials if you are not logged in.
  3. Make sure the OAuth Apps tab is selected and click on the Register a new application button.
  4. Enter a name into the Application name field. Users will see this name, when they authorize your app at the OAuth consent screen!
  5. Fill Homepage URL with the url of your homepage.
  6. In the Description field you should explain what this App will be used for.
  7. Add the URL to the Authorization callback URL field, that Nextend Social Login suggests in the 7th step.
  8. Click the Register application button.
  9. Find the necessary Client ID and Client Secret at the middle of the page. These will be needed in the plugin’s settings!

2. App setup

Once your GitHub app is ready you’ll need to copy and paste the Client ID and Client Secret to the GitHub provider’s Settings tab.

3. Verifying

Once your Client ID and Client Secret has been added you need to verify the setup first. This verification helps you identify possible problems with the app.

Settings

GitHub Settings

Client ID

The Client ID of your GitHub app. You can find it by clicking the name of your App at the GitHub OAuth Apps screen.

Client Secret

The Client Secret of your GitHub app. You can find it by clicking the name of your App at the GitHub OAuth Apps screen.

GitHub Other Settings

Username prefix on Register

Whenever a new user registers with their GitHub account they can get a custom prefix so you can easily identify them.

Fallback username prefix on register

Whenever a new user registers with their GitHub account and we can not generate a valid username from the first name or last name, a random username will be generated. With this option they can get a custom prefix so you can easily identify them.

Terms and conditions

This option can only be seen, if Terms and conditions is set to Show in Global Settings β†’ Privacy tab. Here you can set custom Terms and Conditions for users who register with GitHub. For more information please read our GDPR documentation.

Sync data

By default Nextend Social Login stores the first name, last name, email, avatar url and access token if it is possible, however some additional information can also be retrieved and stored.
When an option is checked, that field will be stored in a meta key with the specified name.

GitHub Sync Data

Sync fields

It determines when the synchronization shall happen.

  • Register: whenever a new user registers with a provider, their data will be retrieved and stored.
  • Login: whenever user logs in with a provider, their data will be retrieved and stored.
  • Link: whenever user links and existing WordPress account with a provider, their data will be retrieved and stored.

GitHub username

Stores the user’s username from GitHub.

GitHub account type

Stores the user’s GitHub account type.

Company name

Stores the name of the company if the user is a member of a company.

Blog URL

Stores the user’s blog url if there is any set.

GitHub Sync Data 2

Location

Stores the location that the user set at GitHub.

Hireable

Stores the information about whether the user is hireable for custom jobs or not.

Bio

Stores the user’s bio.

GitHub Username

Stores the users’ GitHub Username, if there is any set.

Public repo count

Stores the count of the user’s public repositories.

Public gist count

Stores the count of the user’s public gists.

GitHub Sync Data 3

Follower count

Stores the user’s follower number.

Following count

Stores the count of the GitHub accounts the user follows.

Registration date

Stores the date when the user registered at GitHub.

Profile update date

Stores the date when the user updated his/her GitHub account the last time.

HTML Profile URL

Stores the link to the user’s GitHub profile.

JSON Profile URL

Stores the link to the page where the user’s profile details are listed in JSON format.

GitHub Sync Data 4

JSON Followers URL

Stores the link to the page where the user’s followers are listed in JSON format.

JSON Subscriptions URL

Stores the link to the page where the user’s subscription details are listed in JSON format.

JSON Organizations URL

Stores the link to the page where the user’s organizations details are listed in JSON format.

JSON Repositories URL

Stores the link to the page where the user’s profile repositories are listed in JSON format.

JSON Received Events URL

Stores the link to the page where the public events received by the users are listed in JSON format.
List public events received by a user.

Common error messages returned by GitHub during verification

redirect_uri_mismatch

Error: redirect_uri_mismatch: The redirect_uri MUST match the registered callback URL for this application. URI)


The problem is that the entered “Authorization callback URL” is not correct for your app. Check the 7th step of the App setup to fix the problem.

404

404 – This is not the web page you are looking for.


The problem is probably that Client ID field is not correct for your app or maybe the app with the entered ID was deleted. Check the 9th step of the App setup to fix the problem.

Bad credentials

Error: Bad credentials


The Client Secret you copied from the GitHub app is invalid. Make sure the correct one was copied at the 9th step!

Frequently Asked Questions

Why isn’t the email address stored when users register with GitHub?

This provider can only retrieve the user’s email address if there is a public email address set at the user’s profile page!
If a user doesn’t have a public email address set, then with the “Ask E-mail on registration” setting set to either “When email does not provided or empty” or “Always”, you can force the user to enter an email address manually before the registration.

Why is the username a random string?

We are trying to generate a unique username from the name that was set at the user’s profile page. If the name is empty or it contains special characters that WordPress can not handle in usernames, then we will need to generate a unique and random username.
If you don’t want random usernames, you can ask the users to enter a username before the registration by setting the “Ask Username on registration” to either “When username is empty or invalid” or “Always”.