react-native-simple-auth-email
Version:
Native social authentication for React Native
56 lines (52 loc) • 1.09 kB
JavaScript
import {
__,
curry,
invoker,
lensProp,
partial,
pipeP,
replace,
set,
merge,
} from 'ramda';
import {
authorizationUrl,
} from '../utils/oauth2';
import { fromQueryString } from '../utils/uri';
const SCOPE = 'email public_profile';
const AUTH = 'https://www.facebook.com/dialog/oauth';
const ME = 'https://graph.facebook.com/v2.8/me?';
const FIELDS = [
'id',
'name',
'first_name',
'last_name',
'verified',
'email',
'location',
'link',
];
export const authorize = (
{ dance, request },
{ appId, callback, scope = SCOPE, fields = FIELDS },
) => pipeP(
dance,
replace('#', '?'),
fromQueryString,
set(lensProp('credentials'), __, {}),
merge({ fields }),
)(authorizationUrl(AUTH, appId, callback, scope));
export const identify = curry((request, { credentials, fields }) => pipeP(
partial(
request,
[
`${ME}` +
`&access_token=${credentials.access_token}` +
`&fields=${fields.join(',')}`,
{},
],
),
invoker(0, 'json'),
set(lensProp('user'), __, {}),
set(lensProp('credentials'), credentials),
)());