Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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() 로 해당 계정을 불러와 연동을 해제할 수 있음
  ...
}