1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 13:47:31 +02:00

Github added to social logins.

This commit is contained in:
Cameron
2015-01-23 15:52:48 -08:00
parent a74a4bace3
commit 96e94d7a9a
2 changed files with 123 additions and 27 deletions

View File

@@ -1470,16 +1470,10 @@ $social_logins = array (
"enabled" => true "enabled" => true
), ),
"Google" => array (
"enabled" => true,
"keys" => array ( "id" => "", "secret" => "" ),
"scope" => ""
),
"Facebook" => array ( "Facebook" => array (
"enabled" => true, "enabled" => true,
"keys" => array ( "id" => "", "secret" => "" ), "keys" => array ( "id" => "", "secret" => "" ),
"trustForwarded" => false,
// A comma-separated list of permissions you want to request from the user. See the Facebook docs for a full list of available permissions: http://developers.facebook.com/docs/reference/api/permissions. // A comma-separated list of permissions you want to request from the user. See the Facebook docs for a full list of available permissions: http://developers.facebook.com/docs/reference/api/permissions.
"scope" => "", "scope" => "",
@@ -1487,31 +1481,52 @@ $social_logins = array (
"display" => "" "display" => ""
), ),
"Twitter" => array ( "Foursquare" => array (
"enabled" => true,
"keys" => array ( "key" => "", "secret" => "" )
),
// windows live
"Live" => array (
"enabled" => true, "enabled" => true,
"keys" => array ( "id" => "", "secret" => "" ) "keys" => array ( "id" => "", "secret" => "" )
), ),
"MySpace" => array ( "Github" => array (
"enabled" => true, "enabled" => true,
"keys" => array ( "key" => "", "secret" => "" ) "keys" => array ( "key" => "", "secret" => "" )
), ),
"Google" => array (
"enabled" => true,
"keys" => array ( "id" => "", "secret" => "" ),
"scope" => ""
),
"LinkedIn" => array ( "LinkedIn" => array (
"enabled" => true, "enabled" => true,
"keys" => array ( "key" => "", "secret" => "" ) "keys" => array ( "key" => "", "secret" => "" )
), ),
"Foursquare" => array ( // windows live
"Live" => array (
"enabled" => true, "enabled" => true,
"keys" => array ( "id" => "", "secret" => "" ) "keys" => array ( "id" => "", "secret" => "" )
) ),
"MySpace" => array (
"enabled" => true,
"keys" => array ( "key" => "", "secret" => "" )
),
"Twitter" => array (
"enabled" => true,
"keys" => array ( "key" => "", "secret" => "" )
),
); );
@@ -1523,7 +1538,8 @@ $social_external = array(
"Google" => "https://code.google.com/apis/console/", "Google" => "https://code.google.com/apis/console/",
"Live" => "https://manage.dev.live.com/ApplicationOverview.aspx", "Live" => "https://manage.dev.live.com/ApplicationOverview.aspx",
"LinkedIn" => "https://www.linkedin.com/secure/developer", "LinkedIn" => "https://www.linkedin.com/secure/developer",
"Foursquare" => "https://www.foursquare.com/oauth/" "Foursquare" => "https://www.foursquare.com/oauth/",
"Github" => "https://github.com/settings/applications/new",
); );

View File

@@ -0,0 +1,80 @@
<?php
/*!
* HybridAuth
* http://hybridauth.sourceforge.net | https://github.com/hybridauth/hybridauth
* (c) 2009-2011 HybridAuth authors | hybridauth.sourceforge.net/licenses.html
*/
/**
* Hybrid_Providers_GitHub
*/
class Hybrid_Providers_GitHub extends Hybrid_Provider_Model_OAuth2
{
// default permissions
// (no scope) => public read-only access (includes public user profile info, public repo info, and gists).
public $scope = "";
/**
* IDp wrappers initializer
*/
function initialize()
{
parent::initialize();
// Provider api end-points
$this->api->api_base_url = "https://api.github.com/";
$this->api->authorize_url = "https://github.com/login/oauth/authorize";
$this->api->token_url = "https://github.com/login/oauth/access_token";
}
/**
* load the user profile from the IDp api client
*/
function getUserProfile()
{
$data = $this->api->api( "user" );
if ( ! isset( $data->id ) ){
throw new Exception( "User profile request failed! {$this->providerId} returned an invalid response.", 6 );
}
$this->user->profile->identifier = @ $data->id;
$this->user->profile->displayName = @ $data->name;
$this->user->profile->description = @ $data->bio;
$this->user->profile->photoURL = @ $data->avatar_url;
$this->user->profile->profileURL = @ $data->html_url;
$this->user->profile->email = @ $data->email;
$this->user->profile->webSiteURL = @ $data->blog;
$this->user->profile->region = @ $data->location;
if( empty($this->user->profile->displayName) ){
$this->user->profile->displayName = @ $data->login;
}
// request user emails from github api
if( empty($data->email) ){
try{
$emails = $this->api->api("user/emails");
// fail gracefully, and let apps collect the email if not present
if (is_array($emails)) {
foreach ($emails as $email) {
if ($email instanceof stdClass
&& property_exists('primary', $email)
&& true === $email->primary
&& property_exists('email', $email)
) {
$this->user->profile->email = $email->email;
break;
}
}
}
}
catch( GithubApiException $e ){
throw new Exception( "User email request failed! {$this->providerId} returned an error: $e", 6 );
}
}
return $this->user->profile;
}
}