Ask Your Question
0

오브젝트 생성관련해서 facebook 연동시 케이스좀 궁금하네요.(2016-09-21, david_yoo)

asked 2016-11-30 18:15:48 +0900

inkeun.kim gravatar image

현재 example.json user_table 을 별도로 만들어서 udid 그리고 fb_id 라는 색션을 통해 로그인을 진행하고 있습니다.

예제에 설명된경우 에 따르면 한번 설정된 key 값은 교체를 할 수 없다고 되있고 그리고 실제고 해보니 에러가 나오긴하네요.

아마도 처음부터 페이스북으로 로그인한 경우는 문제가 없이 진행될 것 같은데...

처음 facebook 으로 로그인으로 안하여 fb_id 컬럼이 null 설정 된 후 플레이를 하다가 후에 페이스북 로그인을 진행하게되면 key 값을 바꾸지 못하는게 좀 문제가 있는것 같습니다.

결국 로그인시 해당 fb_id 로 db 에서 유저 정보를 검색하기 때문에 fetch 함수를 위해서라도 key 로 설정을 해야하는데....... 이 키를 바꾸지를 못하니 또 문제가 있네요.

현재는 mariadb connection을 별도로 선언해 두어서 db 에 직접반영하게 하고 있는데..

혹시 다른 방법이 있을까요?

먼저 아예 테이블을 지우고 json으로 데이타를 남겨둔뒤 ophaque 데이타를 만들어 선언하는 방법을 해보았는데.... 실제 테이블에서 데이터가 사라지는 시간과 코드상 isnull이 호출되는 시간이 달라서 계속 에러가 나오더군요....

edit retag flag offensive close merge delete

2 answers

Sort by » oldest newest most voted
0

answered 2016-11-30 18:16:49 +0900

inkeun.kim gravatar image

Answer by seunghyun · 2016-09-22 AM 12:11

안녕하세요 아이펀팩토리입니다.

아래와 같이 모델을 구성하는 것은 어떠신지요?

{
  "Account": {
    "Id": "String Key",
    "FacebookId": "String",
    ...
  },
  "FacebookAccount": {
    "Id": "String Key",
    "Account": "Account Foreign"
  },
  ...
}

아래 코드는 Facebook 으로 로그인하는예시입니다.

// facebook id
string fb_id = ...;
Ptr<FacebookAccount> fb_account = FacebookAccount::FetchById(fb_id);
if (not fb_account) {
  // 로그인 실패
  ...
  return;
}
Ptr<Account> account = Account::Fetch(fb_account->GetAccount());
...

아래 코드는 이미 생성되어 있는 계정에 Facebook 계정을 연동하는 예시입니다.

// id
string id = ...;
// facebook id
string fb_id = ...;
Ptr<Account> account = Account::FetchById(id);
Ptr<FacebookAccount> old_fb_account;
Ptr<FacebookAccount> new_fb_account;
// 이미 facebook account 를 가지고 있으면 fetch
if (not account->GetFacebookId().empty()) {
  old_fb_account = FacebookAccount::FetchById(account->GetFacebookId());
}
// 새 facebook account 생성
new_fb_account = FacebookAccount::Create(fb_id);
if (new_fb_account) {
  // FacebookAccount 와 Account 를 연결
  account->SetFacebookId(fb_id);
  new_fb_account->SetAccount(account->Id());
  // 기존에 연결된 FacebookAccount 가 있으면 삭제
  if (old_fb_account) {
    old_fb_account->Delete();
  }
} else {
  // 이미 다른 Account 에 연결되어 있음
  // 필요에 따라 new_fb_account->GetAccount() 로 해당 계정을 불러와 연동을 해제할 수 있음
  ...
}
edit flag offensive delete link more
0

answered 2016-11-30 18:16:55 +0900

inkeun.kim gravatar image

imagedavid_yoo · 2016-09-22 AM 12:33 0 이것도 좋은 방법이네요.

테이블을 2개 만드는법이네요.

흠... 좀더 고민해보고 더 좋은 방법이 없으면 이 방법으로 해야겠네요.

감사합니다 ^^

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-11-30 18:15:48 +0900

Seen: 49 times

Last updated: Nov 30 '16