react-facebook-auth
Version:
A Component React for Facebook authentication
132 lines (119 loc) • 13.2 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"));
else if(typeof define === 'function' && define.amd)
define("ReactFacebookAuth", ["react"], factory);
else if(typeof exports === 'object')
exports["ReactFacebookAuth"] = factory(require("react"));
else
root["ReactFacebookAuth"] = factory(root["React"]);
})(window, function(__WEBPACK_EXTERNAL_MODULE_react__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/facebook-auth.js":
/*!******************************!*\
!*** ./src/facebook-auth.js ***!
\******************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FacebookAuth = function (_React$Component) {\n _inherits(FacebookAuth, _React$Component);\n\n function FacebookAuth() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, FacebookAuth);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = FacebookAuth.__proto__ || Object.getPrototypeOf(FacebookAuth)).call.apply(_ref, [this].concat(args))), _this), _this.responseApi = function (authResponse) {\n window.FB.api('/me', { locale: _this.props.language, fields: _this.props.fields }, function (me) {\n _this.props.callback(_extends({}, me, authResponse));\n });\n }, _this.checkLoginState = function (response) {\n if (response.authResponse) {\n _this.responseApi(response.authResponse);\n return;\n }\n if (_this.props.onFailure) {\n _this.props.onFailure({ status: response.status });\n } else {\n _this.props.callback({ status: response.status });\n }\n }, _this.checkLoginAfterRefresh = function (response) {\n if (response.status === 'unknown') {\n window.FB.login(function (loginResponse) {\n return _this.checkLoginState(loginResponse);\n }, true);\n } else {\n _this.checkLoginState(response);\n }\n }, _this.click = function (e) {\n var _this$props = _this.props,\n scope = _this$props.scope,\n returnScopes = _this$props.returnScopes,\n appId = _this$props.appId,\n onClick = _this$props.onClick,\n reAuthenticate = _this$props.reAuthenticate,\n reRequest = _this$props.reRequest,\n redirectUri = _this$props.redirectUri,\n disableRedirect = _this$props.disableRedirect,\n isMobile = _this$props.isMobile;\n\n\n if (typeof onClick === 'function') {\n onClick(e);\n if (e.defaultPrevented) {\n return;\n }\n }\n\n var params = {\n client_id: appId,\n redirect_uri: redirectUri,\n state: 'facebookdirect',\n return_scopes: returnScopes,\n scope: scope\n };\n\n if (reAuthenticate) {\n params.auth_type = 'reauthenticate';\n }\n\n if (reRequest) {\n params.auth_type = 'rerequest';\n }\n\n if (isMobile && !disableRedirect) {\n window.location.href = '//www.facebook.com/dialog/oauth?' + (0, _utils.toQueryString)(params);\n } else {\n window.FB.login(_this.checkLoginState, {\n scope: scope,\n return_scopes: returnScopes,\n auth_type: params.auth_type\n });\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FacebookAuth, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (document.getElementById('facebook-jssdk')) {\n return;\n }\n\n this.setfbAsyncInit();\n this.loadSdkAsynchronously();\n\n var rootElem = document.getElementById('fb-root');\n if (!rootElem) {\n rootElem = document.createElement('div');\n rootElem.id = 'fb-root';\n document.body.appendChild(rootElem);\n }\n }\n }, {\n key: 'setfbAsyncInit',\n value: function setfbAsyncInit() {\n var _this2 = this;\n\n var _props = this.props,\n appId = _props.appId,\n xfbml = _props.xfbml,\n cookie = _props.cookie,\n version = _props.version,\n autoLoad = _props.autoLoad;\n\n window.fbAsyncInit = function () {\n window.FB.init({\n version: 'v' + version,\n appId: appId,\n xfbml: xfbml,\n cookie: cookie\n });\n\n if (autoLoad || window.location.search.indexOf('facebookdirect') !== -1) {\n window.FB.getLoginStatus(_this2.checkLoginAfterRefresh);\n }\n };\n }\n }, {\n key: 'loadSdkAsynchronously',\n value: function loadSdkAsynchronously() {\n var language = this.props.language;\n (function (d, s, id) {\n var fjs = d.getElementsByTagName(s)[0];\n if (d.getElementById(id)) {\n return;\n }\n var js = d.createElement(s);\n js.id = id;\n js.src = 'https://connect.facebook.net/' + language + '/sdk.js';\n fjs.parentNode.insertBefore(js, fjs);\n })(document, 'script', 'facebook-jssdk');\n }\n }, {\n key: 'render',\n value: function render() {\n var Component = this.props.component;\n\n return _react2.default.createElement(Component, _extends({ onClick: this.click }, this.props.customProps));\n }\n }]);\n\n return FacebookAuth;\n}(_react2.default.Component);\n\nFacebookAuth.defaultProps = {\n redirectUri: typeof window !== 'undefined' ? window.location.href : '/',\n scope: 'public_profile,email',\n onFailure: undefined,\n returnScopes: false,\n xfbml: false,\n cookie: false,\n isMobile: (0, _utils.isMobile)(),\n reAuthenticate: false,\n reRequest: false,\n fields: 'name,email,picture',\n version: '2.8',\n language: 'en_US',\n autoLoad: false,\n disableRedirect: false,\n customProps: {}\n};\nexports.default = FacebookAuth;\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack://ReactFacebookAuth/./src/facebook-auth.js?");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = undefined;\n\nvar _facebookAuth = __webpack_require__(/*! ./facebook-auth */ \"./src/facebook-auth.js\");\n\nvar _facebookAuth2 = _interopRequireDefault(_facebookAuth);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _facebookAuth2.default;\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack://ReactFacebookAuth/./src/index.js?");
/***/ }),
/***/ "./src/utils.js":
/*!**********************!*\
!*** ./src/utils.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toQueryString = toQueryString;\nexports.isMobile = isMobile;\n/**\n * Encode object to url parameters\n *\n * @param object\n * @return {string}\n */\nfunction toQueryString(object) {\n return Object.keys(object).map(function (key) {\n return key + '=' + encodeURIComponent(object[key]);\n }).join('&');\n}\n\n/**\n * Check if device is mobile\n *\n * @return {boolean}\n */\nfunction isMobile() {\n try {\n return !!(window.navigator && window.navigator.standalone || navigator.userAgent.match('CriOS') || navigator.userAgent.match(/mobile/i));\n } catch (ex) {\n return false;\n }\n}\n\n//# sourceURL=webpack://ReactFacebookAuth/./src/utils.js?");
/***/ }),
/***/ "react":
/*!**************************************************************************************!*\
!*** external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} ***!
\**************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = __WEBPACK_EXTERNAL_MODULE_react__;\n\n//# sourceURL=webpack://ReactFacebookAuth/external_%7B%22root%22:%22React%22,%22commonjs2%22:%22react%22,%22commonjs%22:%22react%22,%22amd%22:%22react%22%7D?");
/***/ })
/******/ });
});