0.2.0 • Published 3 years ago

native-kakao-login v0.2.0

Weekly downloads
4
License
MIT
Repository
github
Last release
3 years ago

native-kakao-login

installation

1. iOS

first, add package and install pods

$ yarn add native-kakao-login
$ cd ios
$ pod install

and open .xcworkspace file

go to info.plist

add this two lines

<key>LSApplicationQueriesSchemes</key>
<array>
    <!-- 카카오톡으로 로그인 -->
    <string>kakaokompassauth</string>
    <!-- 카카오링크 -->
    <string>kakaolink</string>
</array>

go to URL Schemes in xcode (target -> info -> URL Types) add URL Schemes like this

kakao{KAKAO_APP_KEY}://oauth // ex) kakao12345678://oauth

and go to developer kakao site, add iOS platform with bundle ID

make this file KakaoLoginUtil.swift

import KakaoSDKAuth
import KakaoSDKCommon

@objc
class KakaoLoginUtil: NSObject {
  @objc
  static func initKakaoSDK() -> Void {
    KakaoSDKCommon.initSDK(appKey: "{YOUR_KAKAO_APP_KEY}") // without kakao prefix, ex) 12345678abcde
  }
  @objc
  static func handleOpenUrl(url: URL) -> Bool {
    if (AuthApi.isKakaoTalkLoginUrl(url)) {
        return AuthController.handleOpenUrl(url: url)
    }

    return false
  }
}

AppDelegate.m

#import "{PLATFORM_NAME}-Swift.h"

...
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [KakaoLoginUtil handleOpenUrlWithUrl:url];
}
...
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef FB_SONARKIT_ENABLED
  InitializeFlipper(application);
#endif

  ...
  // add this line
  [KakaoLoginUtil initKakaoSDK];
  return YES;
}

2. android

open build.gradle(.)

// add this line 
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }

open build.gradle(app)

// add this line
implementation "com.kakao.sdk:v2-user:2.5.0" // 카카오 로그인

make KakaoLoginUtil.java

package com.morearttopeople;

import android.content.Context;

import com.kakao.sdk.common.KakaoSdk;

public class KakaoLoginUtil {
    public static void initKakaoSDK(Context context) {
        KakaoSdk.init(context, "{NATIVE_APP_KEY}"); // without "kakao"prefix, ex) 123456678abcde
    }
}

go to MainApplication.java

@Override
  public void onCreate() {
    super.onCreate();
    // add this line
    KakaoLoginUtil.initKakaoSDK(this);
  }

open AndroidManifest.xml and add this xml codes inside application xml

<activity android:name=“com.kakao.sdk.auth.AuthCodeHandlerActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <!-- Redirect URI: "kakao{NATIVE_APP_KEY}“ -->
        <data android:host="oauth"
                android:scheme="kakao{NATIVE_APP_KEY}" />
    </intent-filter>
</activity>

in kakao developer site, set android platform

how to use

  1. login
import KakaoLogin from "native-kakao-login";

const login = async () => {
    try {
        const result = await KakaoLogin.login();
    } catch (e) {
        console.error(e)
    }
}
  1. getProfile
import KakaoLogin from "native-kakao-login";

const getProfile = async () => {
    try {
        const result = await KakaoLogin.getProfile();
    } catch (e) {
        console.error(e)
    }
}
  1. logout
import KakaoLogin from "native-kakao-login";

const logout = async () => {
    try {
        const result = await KakaoLogin.logout();
    } catch (e) {
        console.error(e)
    }
}
  1. unlink
import KakaoLogin from "native-kakao-login";

const unlink = async () => {
    try {
        const result = await KakaoLogin.unlink();
    } catch (e) {
        console.error(e)
    }
}
  1. getAccessTokenInfo
import KakaoLogin from "native-kakao-login";

const getAccessTokenInfo = async () => {
    try {
        const result = await KakaoLogin.getAccessTokenInfo();
    } catch (e) {
        console.error(e)
    }
}
abort-controllerabsolute-pathacorn-jsxJSONStreamajvacceptsababacorn-globalsadd-streamacornansi-escapesacorn-walkanseransi-alignaggregate-erroransi-colorsansi-cyananymatchansi-regexarr-diffansi-grayarr-flattenansi-redansi-stylesarray-find-indexarr-unionarray-ifyansi-fragmentsarray-includesansi-wraparray-filterarray-reduceargparsearrifyasaparray-maparray.prototype.flatmapassign-symbolsarray-slicearray-unionassert-plusasn1astral-regexatobbabel-eslintarray-uniqueasyncbabel-jestasync-retrybabel-plugin-jest-hoistbabel-plugin-istanbulbabel-polyfillasynckitbabel-preset-current-node-syntaxat-least-nodebabel-preset-jestbabel-plugin-dynamic-import-nodeaws4balanced-matchbasebabel-plugin-syntax-trailing-function-commasbabel-preset-fbjsaws-sign2babel-runtimebase64-jsbefore-after-hookbrace-expansionbracesbindingsbcrypt-pbkdfbplist-creatorbuffer-fromboxenbig-integercache-basebrowserslistbuffer-crc32caller-callsitebplist-parserbserbrowser-process-hrtimecallsitescamelcasecamelcase-keysbuiltinscacheable-lookupcacheable-requestchalkchar-regexbytesclass-utilscapture-exitcaller-pathci-infocaselesschangelog-filename-regexcaniuse-litecli-boxeschardetcocli-widthcollection-visitcli-cursorclean-stackcli-spinnerscliuicloneclone-responsecollect-v8-coveragecolor-supportcolor-namecombined-streamcolor-convertcomponent-emittercolorettecommand-existscompressiblecommandercommondirconcat-mapcompare-funccompressionconnectconcat-streamconfigstoreconventional-changelog-conventionalcommitscompare-versionsconventional-changelogconventional-changelog-angularconventional-changelog-atomconventional-changelog-coreconventional-changelog-codemirrorconventional-changelog-eslintconventional-changelog-expressconventional-changelog-jshintconventional-changelog-preset-loaderconventional-commits-parserconvert-source-mapconventional-changelog-writercopy-descriptorconventional-changelog-jquerycosmiconfigcore-util-isconventional-changelog-embercross-spawnconventional-commits-filtercore-jsconventional-recommended-bumpcore-js-compatcreate-react-classcssomcurrently-unhandledcsstypecrypto-random-stringdargscssstyledebugdecamelizedateformatdecamelize-keysdecode-uri-componentdeep-isdata-urlsdayjsdecimal.jsdashdashdefine-propertiesdefine-propertydecompress-responsedeep-extenddeepmergedefaultsdefer-to-connectdelayed-streamdedentdepddeldenodeifydetect-newlinediff-sequencesdoctrinedetect-repo-changelogdeprecationdeprecated-objdomexceptiondestroyemitterydir-globecc-jsbnemoji-regexduplexer3dot-propend-of-streamelectron-to-chromiumencodingejsencodeurlenquireree-firstes-to-primitiveenvinfoerror-exescaladeerrorhandlerescape-string-regexpeslint-plugin-eslint-commentseslint-plugin-jestescape-goatescape-htmleslint-plugin-reacteslint-plugin-flowtypeeslint-scopeeslint-plugin-react-native-globalseslint-plugin-react-nativeeslint-utilseslint-plugin-react-hooksesqueryeslint-visitor-keysestraverseesutilsesrecurseesprimaescodegenes-abstractespreeeslint-plugin-relayeventemitter3event-target-shimexec-shexpand-bracketsexpectextend-shallowextglobexecaextsprintfetagexternal-editorexitfast-deep-equalfast-difffast-levenshteinfast-json-stable-stringifyfb-watchmanfancy-logfbjs-scriptsextendfastqfbjsfile-entry-cachefill-rangefast-globfind-upfbjs-css-varsfile-uri-to-pathfilelistfind-cache-dirfinalhandlerfiguresflatfragment-cacheflat-cachefs.realpathfor-infunction-bindforever-agentflattedform-datagensyncget-streamfseventsfreshfs-extraget-valuefunctional-red-black-treefind-versionsget-caller-fileget-stdinget-package-typeget-pkg-repogit-remote-origin-urlglobgetpassgit-semver-tagsgitconfiglocalglobal-dirsgit-upgit-raw-commitsgraceful-fsglobalsgithub-usernameglob-parentgh-gotgraphqlhandlebarshas-flaggotgrowlyhas-symbolshas-valuehas-valueshasgit-url-parsehosted-git-infohar-validatorhar-schemahard-rejectionhermes-enginehermes-profile-transformerhuman-signalshas-yarnhttp-cache-semanticsglobbyignorehtml-encoding-snifferhtml-escaperimport-freshhttp2-wrapperimport-localimurmurhashhttp-signatureiconv-liteimage-sizeinflightinheritsiniimport-frominternal-slotimport-cwdimport-lazyhttp-errorsinquirerindent-stringis-bufferis-accessor-descriptoris-callableipis-data-descriptoris-arrayishis-date-objectis-descriptoris-ciis-extendableis-directoryis-extglobip-regexinterpretinvariantis-generator-fnis-globis-finiteis-dockeris-git-dirtyis-fullwidth-code-pointis-git-repositoryis-numberis-installed-globallyis-negative-zerois-objis-interactiveis-plain-objectis-npmis-plain-objis-path-cwdis-potential-custom-element-nameis-regexis-symbolis-typedarrayis-path-insideis-regular-fileis-windowsis-sshis-stringisexeisarrayisobjectis-streamistanbul-lib-coverageis-text-pathis-utf8is-wslistanbul-lib-reportisomorphic-fetchisstreamis-yarn-globaljest-clijest-configjest-diffjest-changed-filesistanbul-lib-instrumentjest-eachjest-docblockistanbul-reportsistanbul-lib-source-mapsjest-get-typejest-environment-nodejest-haste-mapjest-jasmine2jest-mockjest-matcher-utilsjest-message-utiljest-regex-utiljest-resolvejakeiteralljest-runtimejest-snapshotjest-utiljest-validatejest-watcherjest-workerjs-tokensjest-resolve-dependenciesjs-yamljest-leak-detectorjest-environment-jsdomjsescjetifierjest-serializerjest-runnerjsc-androidjson-parse-better-errorsjson-parse-even-better-errorsjson-schema-traversejson-stable-stringify-without-jsonifyjson-schemajson-bufferjsbnjson-stable-stringifyjson-stringify-safejsonifyjson5jest-pnp-resolverkeyvjsonparsekind-ofjsdomjsonfilelevnklawjsprimlines-and-columnsload-json-filelodashlocate-pathlatest-versionkleurlodash._reinterpolatelodash.templatelodash.templatesettingslevenlevenaryjsx-ast-utilslodash.findlodash.ismatchlodash.sortbyloud-rejectionlogkittylog-symbolslodash.throttlemakeerrormacos-releasemap-cacheloose-envifymap-objmap-visitlowercase-keysmerge-streamlru-cachemetrometro-babel-registermake-dirmeowmerge2metro-babel-transformermetro-cachemetro-react-native-babel-presetmetro-coremetro-configmetro-inspector-proxymetro-minify-uglifymetro-react-native-babel-transformermicromatchmetro-resolvermimemetro-symbolicatemetro-source-mapmimic-fnmime-dbminimist-optionsmixin-deepmkdirpmime-typesminimatchmsnanomatchmimic-responsenatural-comparemin-indentmodify-valuesnice-trynode-int64negotiatornannode-fetchnode-stream-zipnormalize-package-datanode-modules-regexpnode-releasesnormalize-pathmute-streamnode-notifiernpm-run-pathnormalize-urlnumber-is-nannullthrowsobject-assignminimistobject-copyobject-inspectnwsapiobject-visitobject.assignobject-keysobject.pickobject.fromentriesobject.valuesonceonetimeob1oauth-signobject.entriesoptionatoron-finishedopenon-headersopencollective-postinstallp-each-seriesp-limitos-namep-locateoraos-tmpdirparent-modulep-cancelablep-finallyoptionsp-tryparse-jsonp-mappackage-jsonneo-asyncparse-pathpascalcasepath-existspath-is-absoluteparse-github-repo-urlparse5parseurlpath-typeparse-urlparse-node-versionpicomatchperformance-nowpath-keypath-parsepinkie-promisepkg-dirpifypinkieplease-upgrade-nodeposix-character-classespiratesplugin-errorprettier-linter-helperspretty-formatprocess-nextick-argspromiseprop-typesplistprepend-fileprelude-lspumpprepend-httpprogressqquick-lrupromptspseudomappslreact-isprotocolspunycodepupaqsrange-parserreadable-streamread-pkgread-pkg-upreact-devtools-coreredentregenerateregenerator-runtimeregenerator-transformregex-notregexp.prototype.flagsregexpu-corercregjsgenregexpprechoirregjsparserreact-refreshremove-trailing-separatorregenerate-unicode-propertiesrepeat-elementrepeat-stringregistry-auth-tokenrequire-main-filenamerequire-directoryrequest-promise-coreregistry-urlrepeatingresolve-cwdresolve-globalresolve-pkgresponselikeresolve-fromresolverequest-promise-nativerequestrimrafresolve-alpnrestore-cursorresolve-urlretreusifysafe-bufferrsvprun-asyncsafe-regexrx-lite-aggregatesrx-literetrysemversanesemver-comparerxjsrun-parallelsaxessemver-diffsendsemver-regexsafer-bufferset-valueserialize-errorserve-staticschedulersaxsetimmediateset-blockingshebang-commandsignal-exitshell-quoteside-channelshelljsslashshebang-regexsetprototypeofsnapdragon-nodeshellwordssnapdragonslidesource-mapsource-map-resolvesnapdragon-utilsource-map-supportspdx-correctsource-map-urlspdx-expression-parsespdx-exceptionssplit-stringspdx-license-idssplit2stack-utilssimple-plistsisteransislice-ansisplitstatic-extendstring-lengthstring-widthsprintf-jssshpkstacktrace-parserstealthy-requirestream-buffersstrip-ansistrip-bomstring.prototype.matchallstatusesstrip-final-newlinestrip-indentstrip-json-commentsstring_decodersupports-colorstring.prototype.trimstartstring.prototype.trimendsupports-hyperlinksterminal-linkstrip-eoftext-tablesymbol-observablesudo-promptsymbol-treethrough2tabletext-extensionstemptmplthroatto-fast-propertiesto-object-paththroughto-regexto-regex-rangetest-excludetmptime-stamptrim-newlinestrim-off-newlinesto-readable-streamtsutilstslibtough-cookietype-detecttoidentifiertype-checktunnel-agenttypedarray-to-buffertr46type-festtweetnaclterm-sizeua-parser-jstypedarrayunicode-canonical-property-names-ecmascriptunicode-match-property-ecmascriptunicode-match-property-value-ecmascriptunicode-property-aliases-ecmascriptunion-valueuglify-esunset-valueuniversal-user-agentultronuglify-jsuri-jsurixunpipeuniversalifyunique-stringutil-deprecateupdate-notifierurl-parse-laxuseurl-joinv8-compile-cachevalidate-npm-package-licenseuse-subscriptionutils-mergeuuidv8-to-istanbulwalkervalidate-npm-package-namevlqw3c-hr-timeverrorvaryw3c-xmlserializerwcwidthwhichwhich-modulewhatwg-encodingwhatwg-fetchwebidl-conversionswhatwg-urlwindow-sizeword-wrapwhatwg-mimetypewrappywhich-pm-runswidest-linewrite-file-atomicwindows-releasewrap-ansixcodewsxml-name-validatorxmlcharsxtendxmlbuildery18nwritexdg-basedirxmldocxmldomxpipeyargsyargs-parseryamlwordwrapyallist
0.2.0

3 years ago

0.1.8

3 years ago

0.1.9

3 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago