|
@@ -1,5 +1,5 @@
|
|
|
import React, {useState} from 'react';
|
|
|
-import { LoginButton, AccessToken } from 'react-native-fbsdk';
|
|
|
+import { LoginButton, AccessToken, LoginManager } from 'react-native-fbsdk';
|
|
|
import RNKakao from 'react-native-kakao';
|
|
|
import { NaverLogin, getProfile } from 'react-native-naver-login';
|
|
|
import { GoogleSignin, GoogleSigninButton, statusCodes } from 'react-native-google-signin';
|
|
@@ -14,14 +14,12 @@ const initials = {
|
|
|
kServiceAppUrlScheme: 'naverorgseonsujoaemptyapp', // only for iOS
|
|
|
};
|
|
|
|
|
|
-GoogleSignin.configure();
|
|
|
-
|
|
|
export default (props)=>{
|
|
|
|
|
|
const [userInfo, setUserInfo] = useState(null);
|
|
|
|
|
|
const googoleSignIn = async () => {
|
|
|
-
|
|
|
+ GoogleSignin.configure();
|
|
|
try {
|
|
|
await GoogleSignin.hasPlayServices();
|
|
|
const result = await GoogleSignin.signIn();
|
|
@@ -44,19 +42,48 @@ export default (props)=>{
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ const facebookLogin = async () => {
|
|
|
+
|
|
|
+ const data = await AccessToken.getCurrentAccessToken();
|
|
|
+ if(data) {
|
|
|
+ console.log('이전에 로그인한 경우 정보 가져오기', data.userID);
|
|
|
+ } else {
|
|
|
+ const result = await LoginManager.logInWithPermissions(['public_profile']);
|
|
|
+
|
|
|
+ if (result.isCancelled) {
|
|
|
+ // handle this however suites the flow of your app
|
|
|
+ throw new Error('User cancelled request');
|
|
|
+ }
|
|
|
+ console.log(result);
|
|
|
+ console.log(`Login success with permissions: ${result.grantedPermissions.toString()}`);
|
|
|
+
|
|
|
+ // get the access token
|
|
|
+ const data = await AccessToken.getCurrentAccessToken();
|
|
|
+ console.log('acess data', data);
|
|
|
+ // await AccessToken.setCurrentAccessToken(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
const authLogin = () => {
|
|
|
props.navigation.navigate('AcceptTerms');
|
|
|
}
|
|
|
const kakaoLogin = async () => {
|
|
|
- try {
|
|
|
- const result = await RNKakao.login();
|
|
|
-
|
|
|
+ const resultInfor = await getKakaoUserInfo();
|
|
|
+ if(resultInfor.loginError) {
|
|
|
+ try {
|
|
|
+ const result = await RNKakao.login();
|
|
|
+
|
|
|
console.log(result);
|
|
|
- } catch (e) {
|
|
|
-
|
|
|
- console.log(`Error: ${e}`);
|
|
|
-
|
|
|
+ } catch (e) {
|
|
|
+
|
|
|
+ console.log(`Error: ${e}`);
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log(resultInfor);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
const kakaoLogout = async () => {
|
|
@@ -73,16 +100,16 @@ export default (props)=>{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const getUserInfo = async () => {
|
|
|
+ const getKakaoUserInfo = async () => {
|
|
|
try {
|
|
|
const result = await RNKakao.userInfo();
|
|
|
-
|
|
|
console.log(result);
|
|
|
+ return result;
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
- console.log(`Error: ${e}`);
|
|
|
-
|
|
|
+ console.log(e);
|
|
|
+ return {loginError:e};
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -92,23 +119,12 @@ export default (props)=>{
|
|
|
console.log(`\n\n Token is fetched :: ${token} \n\n`);
|
|
|
// this.setState();
|
|
|
console.log({ theToken: token });
|
|
|
- getNaverProfile(token)
|
|
|
+ getNaverProfile(token);
|
|
|
if (err) {
|
|
|
console.log(err);
|
|
|
return;
|
|
|
}
|
|
|
});
|
|
|
- // return new Promise(function (resolve, reject) {
|
|
|
- // console.log(props);
|
|
|
- // NaverLogin.login(props, (err, token) => {
|
|
|
- // console.log(`\n\n Token is fetched :: ${token} \n\n`);
|
|
|
- // if (err) {
|
|
|
- // reject(err);
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // resolve(token);
|
|
|
- // });
|
|
|
- // });
|
|
|
};
|
|
|
|
|
|
const getNaverProfile = async(token) => {
|
|
@@ -125,9 +141,31 @@ export default (props)=>{
|
|
|
const naverLogout = () => {
|
|
|
NaverLogin.logout();
|
|
|
}
|
|
|
+ const facebookLogout = () => {
|
|
|
+ console.log('facebook')
|
|
|
+ LoginManager.logOut();
|
|
|
+ }
|
|
|
+
|
|
|
+ const googleLogout = async () => {
|
|
|
+ GoogleSignin.configure();
|
|
|
+ try {
|
|
|
+
|
|
|
+ //await GoogleSignin.revokeAccess();
|
|
|
+ await GoogleSignin.signOut();
|
|
|
+
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
|
|
|
const snsLogout = () => {
|
|
|
+
|
|
|
naverLogout();
|
|
|
+ facebookLogout();
|
|
|
+ kakaoLogout();
|
|
|
+ googleLogout();
|
|
|
+
|
|
|
}
|
|
|
return (
|
|
|
<C.View cls="jc-sa ai-c flx1 bgc-color-white">
|
|
@@ -143,8 +181,8 @@ export default (props)=>{
|
|
|
</C.Text>
|
|
|
</C.View>
|
|
|
<C.View cls="jc-sa flx0.3 w80%">
|
|
|
- {/* <C.EL.Button btncls="bgc-color-facebook" title="Facebook" /> */}
|
|
|
- <LoginButton
|
|
|
+ <C.EL.Button btncls="bgc-color-facebook" title="Facebook" onPress={facebookLogin} />
|
|
|
+ {/* <LoginButton
|
|
|
// style={C.n2cls("w100%") }
|
|
|
onLoginFinished={
|
|
|
(error, result) => {
|
|
@@ -161,7 +199,7 @@ export default (props)=>{
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- onLogoutFinished={() => console.log("logout.")}/>
|
|
|
+ onLogoutFinished={() => console.log("logout.")}/> */}
|
|
|
|
|
|
|
|
|
|
|
@@ -178,7 +216,7 @@ export default (props)=>{
|
|
|
|
|
|
|
|
|
<C.EL.Button btncls="bgc-color-naver " title="Naver" onPress={naverLogin} />
|
|
|
- <C.EL.Button title="LOG-OUT Any" onPress={()=> {snsLogout();}} />
|
|
|
+ <C.EL.Button title="LOG-OUT Any" onPress={snsLogout} />
|
|
|
</C.View>
|
|
|
</C.View>
|
|
|
)
|