소셜(SNS)로그인은 뭘 써야되나요? 카카오가 갑이다. | 퀘스트에 참여하세요

소셜(SNS)로그인은 뭘 써야되나요? 카카오가 갑이다.
인사이트/로그기획 관련

소셜(SNS)로그인은 뭘 써야되나요? 카카오가 갑이다.

#MVP #소셜로그인 #SNS로그인 #선정기준및판단기준 #가장효과적인것 #네이버구글카카오 #SSO #OAuth #회원가입개발하기 #카카오가짱이었어

작성일 : 24.03.06 15:49

0

0

0

👉 본문을 50%이상을 읽으면 '여기까지다' 퀘스트가 완료됩니다(로그인 필수)

안녕하세요 렛플운영자입니다.

Apple 로그인까지 웹에 도입을 마치고 나서, 애플 욕을 엄청 하고 있던 가운데,

문득 SNS로그인 (소셜 로그인)을 도입을 검토 및 뭘 써야하는지 고민하시는 분들에게도 ,

렛플내에서 왜 소셜로그인을 도입했고 사용 현황이 어떻게 되는지 알려드리는 것이 도움이 되겠다는 생각이 드네요.

1. 첫번째, 소셜 로그인이란 무엇인가?

한국에서는 SNS 로그인이라 하기도 하고, 소셜 로그인이라기도 하는데

실제는 소셜 로그인이라고 하는게 정확한 명칭이라고 보입니다.

위키피디아에서는 아래와 같이 정의하고 있습니다.

소셜 로그인(Social Login)Facebook, Twitter, Google과 같은 소셜 네트워킹 서비스의 기존 정보를 사용하여

해당 웹사이트에 대한 새 로그인 계정을 만드는 대신 제3자 웹사이트에 로그인하는 Single Sign-On 형태입니다.

https://en.wikipedia.org/wiki/Social_login

소셜 로그인이지만, 사실상 소셜과는 상관없이 SSO(Single Sign On)기반의 API를 제공하는 업체를 모두 포함합니다.

해당 SSO는 OAuth라고 하는 표준 방식으로 API가 구성되어 있기 때문에

한가지 방식으로 구현하고 나면, 다른 소셜 로그인 추가는 상당히 쉽게 가능합니다.

하나를 구현하는 것 X 2 = 다섯개 구현하는 것과 동일한 수준입니다.

2. 두번째, 소셜 로그인을 왜 도입해야하나?

렛플은 자체 회원가입은 제공하지 않고, 소셜 로그인 5개를 지원하고 있는데요.

저희가 “소셜 로그인만 도입하기로 결정했던 이유”는 다음과 같습니다.

1) 신규 사이트에 대한 신뢰도 이슈

비밀번호 및 개인정보의 암호화는 사실 기본중에 기본이다보니 렛플도 기본적으로 필수적인 내용을 암호화 저장하여 처리합니다.

제가 진짜 처음 만든 사이드프로젝트의 경우, 사실 암호화 처리를 안했습니다. 물론 사용자도 없었지만요.

  • * 물론 렛플은 초기부터 암호화를 적용했습니다.(오해금지)

제가 초기 프로젝트에서 안한 이유는 사실 거창한게 있는게 아니라, 개발하고 배울게 너무 많아서 암호화까지 신경쓸 겨를이 없었던 거죠.

암호화 자체라는 단어도 생소할뿐더러, 사실 암호화 방식도 상당히 많잖아요

실제로 까보면 단방향, 양방향, 공개키 암호화키 등등 너무 복잡하긴 하죠.

이런것까지 신경쓰기에는 사이드프로젝트 빨리 만드는게 급했던 상황인지라, 사실 적용안했던 거죠

아프리카TV OGQ 마켓

내가 유저라고 한다면 , 그리고 처음보는 웹사이트에 가입을 해야 한다면, 내 개인정보나 이메일과 비밀번호가 안전하게 저장한다고 보기 어렵습니다.

털리는 것도 쉽게 털리지만, 털리면 암호화된 정보가 털려야 하는데, 암호화가 된다고 믿을 수가 없습니다.

그렇기 때문에 역지사지 관점에서 유저의 신뢰성 확보를 위해서라도 소셜 로그인을 도입해야 합니다.

2) 회원가입 전환율 이슈

아무래도 여러가지 입력값을 강요할때부터, 회원가입을 안하기 시작합니다.

그래서 회원가입없이 둘러보기를 제공하는 웹사이트도 많은 이유겠죠. 간단한 클릭으로 회원가입 완료되는 것이, 전환율에 있어서 효과적이죠.

소셜 로그인을 도입하는 웹사이트에서 자주보이는 문구가 있습니다. “5초면 가입완료”

진짜 서비스 제공자와의 통신속도만 고려한다면 5초면 가입가능하죠

이 5초면 가입가능하다는 말이, 생각보다 많은 사람들을 가입 전환시키게 만듭니다.

해피투게더3 - 첫 번째 짤 제목을 맞춰라! 자가 장가를 간다?. 20161222 - YouTube

3) MVP 기능 축소하자!

최초 배포시에는 한가지라도 기능을 축소하는 게 좋습니다.

자체 회원가입기능 만들기는 상당히 쉽더라도 , 조회, 변경은 쉽지 않습니다.

예를 들면 로그인 후에 단순히 비밀번호를 변경하는 것은 쉽습니다.

그러나 아예 로그인을 못하고 있는 사용자의 아이디나 비밀번호를 찾는것은 어떻게 해야될까요?

우선 정해진 답은 없습니다.

다들 아이디 찾아보셔서 아시겠지만, 구조가 복잡할 수록 안전해집니다.

그러나 내 사이트에서는 그렇게 더럽게 만들고 싶진 않죠. 근데 그게 맞을까요? 보안상으로 안전할까요?

이런 저런 생각을 하다보면 자체 회원가입을 처음에 넣는다는건 유저분들이 잘 안쓰는 기능에 힘을 쏟고 있다는 것을 알게되실겁니다.

빠르게 오픈하기 위해서, 아이디/비번찾기는 소셜로그인 제공업체에서 하는게 좋습니다.

심지어 몇일간 로그인안하면, 탈퇴처리해주고 등등 계정 관리에 대한 요건도 있습니다.

이런 계정관리를 모두 소셜로그인 업체에 맡기는게 , 어려운 일들을 피해갈 수 있습니다.

3. 언제 소셜 로그인을 포기해야 하는가?

어찌보면 가장 핵심이 되는 회원정보가 ,나랑 1도 상관없는 외부 업체와 연계되어있다는 것이 사실 큰 단점입니다.

또한 그들의 배를 불려주는 거겠죠. 그렇기 때문에 소셜 로그인이 최종 골은 아닙니다.

실제로, 3일간 카카오로그인이 먹통이 된적이 있었습니다. 이때 카카오톡으로 회원가입했던 분들은 로그인이 불가했습니다.

이런 상황들이 네이버/구글/페이스북에도 없을까요? 분명히 발생할 수 있는 일입니다.

소셜로그인을 포기한다기보다는, 언제부터 자체 계정/로그인을 지원할 것인가가 중요할것 같습니다.

이관을 쉽게 한다거나, 기존의 아이디랑 매핑해준다거나 하는 것들 말이죠.

1) 공용 계정이 필요할 때

소셜 로그인은 사실상 자기 계정입니다. 구글같이 막 만드는 계정의 경우는 좀 다를 수 있는데요.

카카오톡, 네이버, 페이스북 등 다 자기 계정이잖아요.

공용 계정, 특히 회사 계정을 자기 개인 계정으로 돌려 쓰기 좋아하는 사람은 없겠죠.

공용 계정이 필요한 기능이 생기면, 무조건 자체 계정/로그인이 필요합니다.

2) 해당 사이트가 더 이상 핫하거나 안정적이지 않을때

요근래 특히 페이스북을 보면 좀 그렇습니다.

페이스북자체를 사용하는 사람보다 인스타그램을 사용하는 사람이 더 많고, 페이스북자체가 나이가 들어가다보니

페이스북 로그인을 사용하는 사람 자체가 줄었습니다.

이러면 굳이 내가 이걸 지원해야되나 라는 생각이 드니까요

기존에 페이스북으로 가입했던 사람은 자체 계정으로 전환할 수 있게 지원해주면서 닫아야겠죠.

3) 외부에서 사용할 수 있는 자체 API를 구성하고 싶을때

예를 들면, 쿠팡의 경우 이전에 소셜 로그인이 있었습니다.

현재는 소셜 로그인이 없고, 쿠팡 로그인만 있습니다.

쿠팡 로그인만 있는 경우는, 내/외부에서 자체 쿠팡 API를 사용하는 것들이 많아지면, 과감하게 소셜 로그인을 없애야 합니다.

SNS가입을 과감하게 버리는 선택을 하셔야지, 정보의 일원화관리가 가능합니다.

그러기 위해 사전적으로 값들이 중복되지 않게 관리하셔야 합니다.(이메일이나 전화번호 등)

4. 소셜로그인을 쓰면 무슨 정보를 받을 수 있나요?

제가 한번 그래도 시중에서 가장 많이 볼 수 있는 소셜 로그인을 모두 나열해보겠습니다.

1) 네이버 https://developers.naver.com/

네이버에서는 다양한 회원정보를 제공합니다.

[ 이름, 닉네임, 프로필이미지, 이메일, 성별, 생일, 연령대, 출생년도, 휴대전화번호 ]

특히 코로나때 QR인증과 , 네이버 페이 실명인증으로 인하여 , 실명인증된 계정의 비율이 압도적으로 올라가서, 전체 데이터가 모두 신뢰도가 높습니다.

다만, 필수정보임을 네이버에 증명해야지 필수로 기재할 수 있는데요.

증명하기 쉽지 않죠. 모든게 필수정보일 수는 없으니까요. 받더라도 사용자의 이탈이 크기 때문에 최소의 필수정보를 선정하셔야합니다.

신뢰도가 높은 정보는 별명(닉네임) + 이메일 정도입니다.

그 외는 사실 받고자 하더라도 , 빈 값으로 받거나 디폴트 값이 들어올 가능성이 큽니다.

2) 카카오 https://developers.kakao.com/console/app

카카오는 네이버보다 더 많은 회원정보연동이 가능합니다.

[ 이름, 닉네임, 프로필이미지, 이메일, 성별, 생일, 연령대, 출생년도, 휴대전화번호, CI, 친구목록, 채널추가상태, 배송지정보]

물론 네이버와 마찬가지로, 필수정보임을 별도로 증명해야 받을 수 있는데 , 사실상 어렵습니다.

신뢰도가 높은 정보는 별명(닉네임) + 전화번호 + 프로필 이미지 정도입니다.

3) 구글 https://console.cloud.google.com/apis/

아래 보시겠지만, 사실 얻을 수 있는 정보가 상당히 제한적입니다.

이름(닉네임), 프로필 이미지, 이메일주소 정도인데 , 프로필 이미지는 거의 못쓴다고 보시면됩니다.

렛플이라면 “렛”으로 로고 만드는거 이전에 보신적 있죠. 그렇습니다.

신뢰도가 높은 정보는 별명(닉네임) + 이메일 정도입니다.

https://developers.google.com/identity/sign-in/web/people

var profile = auth2.currentUser.get().getBasicProfile();
  
console.log('ID: ' + profile.getId());
console.log('Full Name: ' + profile.getName());
console.log('Given Name: ' + profile.getGivenName());
console.log('Family Name: ' + profile.getFamilyName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());

4) 페이스북 (https://developers.facebook.com/docs/graph-api/reference/user/#default-public-profile-fields)

페이스북도 상당히 많은 정보를 제공합니다.

[ 이름 , 프로필 이미지, 이메일 , 연령대, 생일, 친구리스트, 성별, 주소, 위치, 사진, 동영상, 포스트 등]

받고자 하면, 다 받을 수 있지만, 페이스북은 민감한 영역이 많다 보니, 승인 안할 가능성이 크겠죠.

이게 프로필을 제외한 영역들은 심사가 까다롭게 들어갑니다.

저 내용을 다 등록한 사람들도 있겠지만, 사실 연령대, 생일 , 위치 이런것들 등록 안 해놓은 사람이 많을 겁니다.

그래서 신뢰도가 높은 정보는 별명(닉네임) + 프로필 이미지 + 이메일 주소 정도입니다.

4) 애플 로그인 (https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230955-scope)

애플 로그인은 딱 두개 줍니다.

이름과 이메일만 요청할 수 있습니다. 그외정보는 요청자체 불가능합니다.

이름의 경우, 애플계정에 등록된 이름을 주고, 이메일은 애플자체에서 암호화처리한 임시 이메일계정을 던져줍니다.

또한 애플로그인의 경우 애플 기기를 가지고 있는 사람들은 가지고 있긴 하지만, 활용도가 떨어지죠

IOS 앱을 런칭하고자 하시는 분들은 필수이지만, 필수로 생각하기에는 너무 지원영역이 한정적입니다.

별명(닉네임) + 이메일을 받으실 수 있습니다.

5) 깃허브 https://docs.github.com/ko/rest/users/users?apiVersion=2022-11-28#get-the-authenticated-user

깃허브는, 일반적인 웹사이트에서는 쓰기는 어려운 구조입니다.

그러나 프로그래머를 타겟으로 하거나, 뭔가 코드를 기반으로 연동을 하는 서비스에서는 무조건 필수적으로 하는게 좋습니다.

그렇게 해놔야 로그인 이후에, 별도의 연동작업을 하기에 편하니까요

우선, 프로필 정보는 풍부하지 않다고 봐야합니다.

아이디, 프로필 이미지, 블로그 주소, 위치 정보, 이메일, 고용 가능여부, 트위터 주소 정도가 나름 눈에 띕니다.

그래서 신뢰도가 높은 정보는 아이디(닉네임) + 이메일 정도라고 보이네요.

다른 값들은 빈값으로 올 가능성이 높습니다.

{
  "login": "octocat",
  "id": 1,
  "node_id": "MDQ6VXNlcjE=",
  "avatar_url": "https://github.com/images/error/octocat_happy.gif",
  "gravatar_id": "",
  "url": "https://api.github.com/users/octocat",
  "html_url": "https://github.com/octocat",
  "followers_url": "https://api.github.com/users/octocat/followers",
  "following_url": "https://api.github.com/users/octocat/following{/other_user}",
  "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
  "organizations_url": "https://api.github.com/users/octocat/orgs",
  "repos_url": "https://api.github.com/users/octocat/repos",
  "events_url": "https://api.github.com/users/octocat/events{/privacy}",
  "received_events_url": "https://api.github.com/users/octocat/received_events",
  "type": "User",
  "site_admin": false,
  "name": "monalisa octocat",
  "company": "GitHub",
  "blog": "https://github.com/blog",
  "location": "San Francisco",
  "email": "octocat@github.com",
  "hireable": false,
  "bio": "There once was...",
  "twitter_username": "monatheoctocat",
  "public_repos": 2,
  "public_gists": 1,
  "followers": 20,
  "following": 0,
  "created_at": "2008-01-14T04:33:35Z",
  "updated_at": "2008-01-14T04:33:35Z",
  "private_gists": 81,
  "total_private_repos": 100,
  "owned_private_repos": 100,
  "disk_usage": 10000,
  "collaborators": 8,
  "two_factor_authentication": true,
  "plan": {
    "name": "Medium",
    "space": 400,
    "private_repos": 20,
    "collaborators": 0
  }
}

6) 링크드인

https://learn.microsoft.com/en-us/linkedin/shared/references/v2/profile/basic-profile?context=linkedin%2Fconsumer%2Fcontext

링크드인에 상당한 기대를 하고 있으실 분들이 많으실 것 같은데, 생각보다 기대를 충족시켜주지는 못합니다.

우리가 기대하는 것은 , 이사람의 직장정보나 프로젝트 정보 , 경력 , 리뷰 같은 정보인데

그런정보는 받을 수도 없고, 심사조차도 진행하지 않고 있습니다.

그래서 신뢰도가 높은 정보는 아이디(닉네임) + 프로필 이미지 정도라고 보이네요. 심지어 이메일도 없습니다.

5. 그래서 어떻게 구성하는게 좋을까?

우선 소셜 로그인을 적용할 때 , 4가지의 정보는 필수값으로 정의하는 것이 좋습니다.

필수정보의 구성 : 아이디(닉네임) + 프로필 이미지 + 이메일 + 전화번호

이 4가지 정보를 목표로 해서 , 소셜 로그인을 구상하는 것이 좋다고 보입니다.

모든 값을 다 가질 수 없기 때문에, 이외의 데이터는 별도로 유저분들한테 받든지 아니면 포기하던지 결정을 해야 합니다.

네이버(국내) : 아이디(닉네임) + 이메일 + 전화번호

카카오(국내) : 아이디(닉네임) + 프로필 이미지 + 전화번호

구글(해외) : 아이디(닉네임) +이메일

페이스북(해외): 아이디(닉네임) +프로필 이미지 + 이메일

애플(해외) : 아이디(닉네임) + 이메일

깃허브(해외-프로그래머) : 아이디(닉네임) + 이메일

링크드인(해외) : 아이디(닉네임)+ 프로필 이미지

어떤게 가장 좋아보이시나요?

네이버 카카오는 전화번호를 받을 수 있습니다. 그외는 전화번호가 아닌 이메일 주소+ 이미지가 전부입니다.

저라면 해외를 포함하여 생각한다면 다음과 같은 조합을 추천드립니다.

1) 네이버+구글

2) 카카오+구글

6. 실제 렛플에서는 어떤 소셜 로그인을 가장 애용하고 있는가?

근데 위에 제가 말씀드린 내용은 그냥 제가 감으로 말씀드린 것이고, 실제 데이터를 보면 더 정확하겠죠

아래 내용은 현재 렛플에서 소셜로그인으로 가입된 계정들의 비율입니다.

해당 데이터는 2024년 2월말기준으로 작성되어있습니다.

카카오(38%) > 구글(33%) > 네이버(25%)순입니다. 페이스북은 왜 붙였는가 생각될 정도로 상당히 가입이 저조합니다.

차기 서비스를 만든다고 할떄는 페이스북 빼고 될것 같습니다.

카카오계정으로 가입하는 비중이 상당히 높고, 그다음이 구글, 네이버 보시면 되겠습니다.

저는 사실 추측으로는 구글이 가장 많지 않을까 생각했었습니다.

로그인도 잘 되고, 조금 일회성인 느낌도 있으면서도, 엄청 관리하는 계정이 아니니까요

그러나 실제로는 카카오가 짱이었습니다. 여러분 하나만 붙여야 한다면 카카오 붙이세요~

7. 소셜 로그인별로 참여도는 다를까?

저는 애플계정 같은 경우는 사실 버리는 체험용으로 가장 많이 쓰고는 있습니다.

애플계정에 대한 애착도 없고 이메일 등도 임시 이메일등이 제공되기 때문에 그렇습니다.

실제로 궁금하더라구요

이 계정마다 어떤것은 버리는 것으로 , 어떤것은 진짜 이용할 목적으로 가입하는 것들이 다르지는 않을까?

저희가 렛플력이라는 것을 쌓고 있다보니, 회원의 활동을 점수로 비교해 볼 수 있습니다.

그것을 비교해봤을 때

카카오, 네이버, 구글 > 애플 > > 페이스북

카카오 , 네이버 , 구글로 가입하신 분들이 애플, 페이스북보다는 활동성이 높다고 보입니다.

그러니까 여러분 애플, 페이스북 로그인을 굳이 안 붙이셔도 될것 같습니다.


* 세줄 결론

1. 초기에는 신뢰감을 높이고 개발량을 줄이기위해서 소셜로그인을 붙이자

2. 소셜 로그인의 필수정보는 아이디(닉네임) + 프로필 이미지 + 이메일 + 전화번호이다.

3. 하나만 붙이려면 카카오, 여유가 있다면 네이버, 구글, 카카오를 붙이자. 다른 애들은 안붙여도된다.