0.1.1 • Published 5 years ago

native-kakao-login v0.1.1

Weekly downloads
4
License
MIT
Repository
github
Last release
5 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)
    }
}
abababort-controllerJSONStreamabsolute-pathacceptsacornacorn-globalsadd-streamacorn-walkaggregate-erroracorn-jsxajvanseransi-cyanansi-alignansi-escapesansi-colorsansi-fragmentsansi-redansi-regexansi-grayanymatchansi-wrapansi-stylesarr-diffarr-flattenargparsearray-ifyarr-unionarray-find-indexarray-includesarray-filterarray-unionarray-maparray-slicearray-reducearray.prototype.flatmaparrifyarray-uniqueastral-regexasn1assign-symbolsassert-plusasyncat-least-nodeasync-retryatobasynckitaws-sign2babel-plugin-dynamic-import-nodebabel-eslintaws4babel-jestasapbabel-plugin-istanbulbabel-polyfillbabel-plugin-syntax-trailing-function-commasbabel-preset-current-node-syntaxbabel-plugin-jest-hoistbabel-preset-fbjsbabel-runtimebalanced-matchbasebase64-jsbcrypt-pbkdfbefore-after-hookboxenbindingsbig-integerbplist-parserbrace-expansionbplist-creatorbracesbrowserslistbrowser-process-hrtimebserbuffer-crc32bytesbuiltinscacheable-lookupcache-basebabel-preset-jestcacheable-requestcaller-callsitecamelcase-keyscallsitescaller-pathcaniuse-litechalkcamelcasecapture-exitchangelog-filename-regexcaselesschardetchar-regexclass-utilsclean-stackci-infocli-boxescli-cursorcli-widthclonecocli-spinnersclone-responsecliuicollection-visitcolor-convertcolor-namecollect-v8-coveragecombined-streamcolorettecommand-existscolor-supportcommondircompressiblecommandercompare-funccompare-versionscomponent-emitterconcat-mapconcat-streamcompressionconfigstoreconnectconventional-changelogconventional-changelog-angularconventional-changelog-atomconventional-changelog-conventionalcommitsconventional-changelog-codemirrorconventional-changelog-eslintbuffer-fromconventional-changelog-emberconventional-changelog-coreconventional-changelog-jqueryconventional-changelog-preset-loaderconventional-changelog-expressconventional-commits-filterconventional-changelog-writerconventional-commits-parserconventional-changelog-jshintcore-jscore-util-isconvert-source-mapcore-js-compatconventional-recommended-bumpcreate-react-classcopy-descriptorcosmiconfigcrypto-random-stringcssomcross-spawncssstylecurrently-unhandledcsstypedargsdateformatdashdashdecamelize-keysdata-urlsdayjsdecimal.jsdecamelizedecode-uri-componentdedentdecompress-responsedebugdeep-extenddeep-isdefaultsdefine-propertiesdeepmergedefer-to-connectdefine-propertydeldenodeifydelayed-streamdepddeprecationdeprecated-objdetect-newlinedestroydoctrinedetect-repo-changelogdomexceptiondir-globee-firstdot-propduplexer3ecc-jsbnemitteryemoji-regexelectron-to-chromiumencodeurlejsenvinfoencodingend-of-streamenquirererror-exes-abstracterrorhandlerescaladees-to-primitiveescodegenescape-goatescape-string-regexpeslint-plugin-eslint-commentsescape-htmleslint-plugin-jesteslint-plugin-flowtypeeslint-plugin-reacteslint-plugin-react-hookseslint-plugin-react-nativeeslint-plugin-react-native-globalseslint-scopeeslint-utilseslint-visitor-keyseslint-plugin-relayesprimaestraverseesqueryespreeesrecurseesutilseventemitter3event-target-shimetagdiff-sequencesexec-shexecaexitextend-shallowexpectexpand-bracketsextglobextendexternal-editorextsprintffast-deep-equalfast-globfancy-logfast-json-stable-stringifyfast-difffast-levenshteinfastqfbjs-scriptsfb-watchmanfiguresfbjsfile-uri-to-pathfilelistfinalhandlerfile-entry-cachefind-cache-dirfind-upfind-versionsflatflattedfor-inflat-cacheforever-agentform-datafreshfs.realpathfragment-cachefs-extrafseventsfunctional-red-black-treegensyncfunction-bindget-package-typeget-pkg-repoget-caller-fileget-stdinget-valueget-streamgetpassgh-gotgit-raw-commitsgit-remote-origin-urlgit-semver-tagsgit-upgitconfiglocalgit-url-parsegithub-usernameglob-parentglobglobal-dirsglobalsgotglobbygrowlyfbjs-css-varsgraceful-fsfill-rangegraphqlhandlebarshar-validatorhard-rejectionhashas-symbolshas-flaghar-schemahas-valueshas-valuehas-yarnhermes-enginehtml-encoding-snifferhosted-git-infohermes-profile-transformerhttp-errorshttp-cache-semanticshtml-escaperhttp-signatureiconv-litehuman-signalshttp2-wrapperignoreimage-sizeimport-fromimport-freshimport-cwdimurmurhashindent-stringinflightiniinheritsimport-lazyinterpretimport-localinternal-slotinquireripis-arrayiship-regexinvariantis-accessor-descriptoris-callableis-bufferis-data-descriptoris-ciis-extendableis-date-objectis-dockeris-directoryis-descriptoris-extglobis-finiteis-generator-fnis-fullwidth-code-pointis-git-dirtyis-git-repositoryis-installed-globallyis-globis-interactiveis-negative-zerois-numberis-npmis-objis-path-insideis-path-cwdis-plain-objis-potential-custom-element-nameis-regexis-sshis-regular-fileis-streamis-plain-objectis-stringis-symbolis-text-pathis-typedarrayis-utf8is-yarn-globalis-wslisexeis-windowsisarrayisomorphic-fetchisobjectisstreamistanbul-lib-coverageistanbul-lib-reportistanbul-lib-instrumentistanbul-reportsjakeiterallistanbul-lib-source-mapsjest-changed-filesjest-configjest-eachjest-docblockjest-get-typejest-environment-jsdomjest-haste-mapjest-jasmine2jest-matcher-utilsjest-leak-detectorjest-mockjest-pnp-resolverjest-message-utiljest-clijest-diffjest-environment-nodejest-regex-utiljest-resolvejest-resolve-dependenciesjest-runnerjest-runtimejest-snapshotjest-validatejest-watcherjest-utiljs-tokensjest-serializerjetifierjs-yamljsc-androidjest-workerjsdomjsbnjsescjson-parse-even-better-errorsjson-schemajson-bufferjson-parse-better-errorsjson-stable-stringify-without-jsonifyjson-schema-traversejson-stable-stringifyjson-stringify-safejsonifyjsonparsejsprimjsx-ast-utilsjson5keyvjsonfilekind-ofkleurlatest-versionload-json-filelevenarylevnklawlines-and-columnslevenlocate-pathlodash._reinterpolatelodash.ismatchlodash.findlodash.templatelodashlodash.sortbylodash.templatesettingslog-symbolslogkittyloose-envifyloud-rejectionlowercase-keysmake-dirlodash.throttlelru-cachemacos-releasemakeerrormap-cachemap-objmeowmetro-babel-registermap-visitmetrometro-babel-transformermerge2metro-cachemetro-configmetro-coremetro-resolvermetro-react-native-babel-transformermetro-inspector-proxymetro-source-mapmetro-symbolicatemetro-minify-uglifymime-typesmime-dbmimic-fnmimemin-indentmimic-responseminimatchminimist-optionsminimistmodify-valuesmixin-deepmute-streammkdirpmicromatchnannanomatchmsnode-fetchneo-asyncnegotiatornice-trynode-int64node-modules-regexpmerge-streamnode-notifiernormalize-package-datanode-stream-zipnormalize-pathnode-releasesnormalize-urlnwsapinumber-is-nannullthrowsoauth-signob1object-assignnpm-run-pathmetro-react-native-babel-presetobject-copyobject-inspectobject-keysobject.assignobject-visitobject.entriesobject.pickobject.fromentriesobject.valueson-finishedon-headersonceonetimeopenopencollective-postinstalloptionatoroptionsoraos-tmpdiros-namep-cancelablep-each-seriesp-finallyp-locatep-limitp-mapp-trypackage-jsonparent-moduleparse-jsonparse-github-repo-urlparse-pathparse-urlparse-node-versionparse5parseurlpath-existspath-parsepath-is-absolutepascalcasepath-keypath-typeperformance-nowpinkiepifypicomatchpinkie-promisenatural-compareplease-upgrade-nodeplistpkg-dirpiratesposix-character-classesplugin-errorprepend-httpprelude-lsprepend-fileprettier-linter-helperspretty-formatpromptsprocess-nextick-argsprogressprop-typesprotocolspseudomappromisepumppupapunycodepslqquick-lrurange-parserqsrcreact-devtools-corereact-isread-pkgreact-refreshreadable-streamrechoirread-pkg-upredentregenerator-runtimeregenerate-unicode-propertiesregenerateregenerator-transformregexp.prototype.flagsregexpu-coreregex-notregexppregistry-urlregistry-auth-tokenregjsgenregjsparserremove-trailing-separatorrepeat-stringrepeat-elementrepeatingrequestrequest-promise-coreresolve-alpnrequire-directoryrequire-main-filenameresolve-cwdresolve-fromrequest-promise-nativeresolve-urlresponselikeresolveresolve-globalresolve-pkgreusifyrestore-cursorretryrimrafrsvpretrun-parallelrun-asyncrx-literx-lite-aggregatessafe-regexsafer-bufferrxjssafe-buffersaxschedulersanesaxessemver-comparesemversemver-diffsemver-regexserialize-errorsendserve-staticsetimmediateshebang-commandset-valueset-blockingshell-quoteshebang-regexshellwordsshelljsside-channelsignal-exitsimple-plistsisteransislideslashsnapdragonsnapdragon-nodesnapdragon-utilslice-ansisource-map-urlspdx-exceptionssource-map-resolvespdx-correctspdx-expression-parsesplitspdx-license-idssplit2split-stringsshpksprintf-jsstacktrace-parsersource-mapstatic-extendstatusesstring-widthstring-lengthstring.prototype.matchallstream-buffersstealthy-requirestring_decoderstrip-ansistring.prototype.trimstartsource-map-supportsetprototypeofstring.prototype.trimendstrip-bomstrip-eofstrip-final-newlinestack-utilsstrip-json-commentsstrip-indentsudo-promptsupports-colortablesupports-hyperlinkssymbol-treeterm-sizetempsymbol-observableterminal-linktext-extensionstest-excludethrough2text-tabletmpthroughtime-stampthroattmplto-readable-streamto-fast-propertiestoidentifierto-object-pathto-regextough-cookietrim-newlinesto-regex-rangetr46trim-off-newlinestslibtsutilstunnel-agenttype-checktweetnacltype-detecttype-festuglify-estypedarray-to-buffertypedarrayuglify-jsua-parser-jsultronunicode-match-property-value-ecmascriptunicode-canonical-property-names-ecmascriptunicode-match-property-ecmascriptunicode-property-aliases-ecmascriptunion-valueunique-stringuniversal-user-agentunset-valueupdate-notifierurixunpipeurl-joinuri-jsurl-parse-laxuse-subscriptionutils-mergeuseutil-deprecatev8-compile-cachevalidate-npm-package-licensev8-to-istanbulvalidate-npm-package-namevaryuuidverrorw3c-hr-timewalkerw3c-xmlserializervlqwcwidthwhatwg-fetchwebidl-conversionswhatwg-encodingwhatwg-mimetypewhatwg-urlwhichwhich-pm-runswindow-sizewhich-modulewindows-releasewidest-lineword-wrapwordwrapwrappywrap-ansiwritewrite-file-atomicwsxdg-basedirxcodeuniversalifyxml-name-validatorxmlcharsxmldocxpipexmlbuilderxtendxmldomy18nyamlyallistyargsyargs-parser
0.2.0

5 years ago

0.1.8

5 years ago

0.1.9

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago