UNPKG

react-facebook-auth

Version:
132 lines (119 loc) 13.2 kB
(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?"); /***/ }) /******/ }); });