This document walks you through frequently asked questions, especially for those who visit the Kakao platform for the first time. If you cannot find such solutions or have further questions, visit the forum for developers called 'DevTalk' and feel free to ask questions.
You can change the DevTalk interface language to English. Refer to How can I change the DevTalk interface language?.
Due to cached data, the changes on the preview image or text may not be applied to a message sent through the Kakao Link or the Kakao Talk messaging API, or a story posted by scraping a website through Kakao Story. In this case, go to [Tools] > [Reset Tool] > [OG (Open Graph) Cache] menu, and enter the web page URL or file URL stored on the Kakao platform to delete the cached data.
If the previous image or text still appears even after initializing the cached data, try the followings:
For more details, refer to Notice. To see more about the OG tag used in a scrap message, refer to Message Template.
The Kakao platform only retrieves and uses web page information based on OG protocol, not changing the web page data. Therefore, we cannot handle any other issues except for deleting the cash data with the Reset Tool. If the Reset Tool does not work properly or any problems are found with the Reset Tool, contact us through DevTalk.
You can use the Kakao Open APIs free of charge for a certain duration every month as long as you have not exceeded the quota limit. If you request an API after exceeding the limit, you may receive the "API limit has been exceeded." message and will not be able to request the API anymore. To check the quota and limits for each API, refer to the Operating Policy.
If you want to increase the quota limit, request negotiation or partnership arrangements in DevTalk. To increase quota limit of the Kakao Maps API or Local API, check the Notice first. Kakao reviews your request and then may enter into partnerships or increase the quota limit temporarily as you request.
You can change your app's icon or name displayed on the Consent screen, a Kakao Talk message, or the Manage Connected Services page.
You can change one of the team members to an owner of your service app by referring to Manage team members.
However, in the following cases, you need to request to change an app's owner in person:
Send us the following information and attachments via platform.developers@kakaocorp.com
:
No. App keys are unique identifier given to each app. You can check your app keys or reissue new ones in [My Application] > [App Keys]. However, make sure that the previous app keys after the reissue are deleted and cannot be recovered. If you request an API such as Kakao Login API using the previous app key, the request fails. Thus, do not reissue app keys for the service in operation, except for inevitable cases such as your app key is revealed.
Since an app is used to register service information on the Kakao platform, a newly added app is considered as a different service even though its name is the same as the existing app. Thus, the user information of the existing app cannot be shared with or migrated to the new app.
In addition, a member ID (user_id) is assigned to each user per app. If you add a new app, a different member ID is assigned to the same user on the new app. In this case, you cannot check if the user is the same person using the existing app, and the user also has to sign up again even though the user has previously signed up before.
For these reasons, do not change your app keys by creating a new app with the same service information or reissuing app keys. Make sure that you cannot recover the previous app keys or migrate user information after reissuing app keys.
In the following cases, you do not have to reissue app keys:
If you need to change the service information, you can modify it in [My Application] > [General]. If you lost all accounts with permission to manage the app so cannot check or modify the service information, you must request to change the app owner by referring to Q. How can I change the app owner?.
You can register site domains up to 10 by default. To register more than 10 site domains, permission is required. Proceed as follows to request permission:
@kakao
" with the following information:After permission is granted to your app, you can register up to 100 site domains. You can also use the wildcard subdomains functionality to allow more flexible subdomains.
This error occurs when the key hash value used in your app is different from the value registered on the platform.
If you are using Android App Bundles, recommended method to publish your app, you must register the value obtained by using the Google Play Console to get Release key hash. With the Android App Bundles, when you sign your app bundle with an upload key and upload to the Google Play Console, Google Play generates the APK and signs your app. Thus, in this case, you cannot use the release key hash value obtained through Terminal or the Android SDK.
Check if "-all_load" is added to 'Other Linker Flags' in the current project. For more information, refer to Install Framework.
Use -force_load $(SRCROOT)/KakaoOpenSDK.framework/KakaoOpenSDK
instead of -all_load
to force to load the Kakao SDK.
Check if the logic of [[KOSession sharedSession] close]
is missing before calling openWithCompletionHandler
. Re-check your code by referring to the code snippet of Kakao Login.
When an error occurs, you can figure out its cause through the error message in the response.
The errors that commonly occur when calling an API consist of the error code and error message. You can figure out its error type in each reference guide. If you encounter an error during the Kakao Login process, refer to Kakao Login > Troubleshooting.
The "Invalid redirect" error often occurs when you first implement Kakao Login and request to receive an authorization code.
...error="invalid_grant", error_description="Invalid redirect:...
This error occurs when the Redirect URI set in [My Application] > [Kakao Login] > [Redirect URI] mismatches with redirect_uri
used to request an authorization code. You must set Redirect URI used to get an authorization code before requesting this API. If you have already set it, check if the set Redirect URI is exactly the same with the redirect_uri
that is returned through the error message.
When tapping the Kakao Login button, it is supposed to launch the Kakao Talk app to log in through Kakao Talk. If the Login screen to input Kakao Account information appears, check if you specify the Auth Type. According to the specified Auth types, Kakao Login works differently, and users can log in with the following information:
When using a REST API, users can log in with their Kakao Accounts and passwords only. On the other hand, the Kakao SDKs provide the following options:
Platform | Parameter | Description |
---|---|---|
JavaScript | throughTalk | Whether to use Kakao Talk Simple Login (Boolean ). |
Android | AuthType | Set a type of user authentication. If not specified, KAKAO_LOGIN_ALL is applied.KAKAO_TALK : Simple Login through Kakao Talk.KAKAO_STORY : Simple Login through Kakao Story.KAKAO_ACCOUNT : Login by inputting Kakao Account and password on a webView.KAKAO_TALK_EXCLUDE_NATIVE_LOGIN : Simple Login through Kakao Talk. If any Kakao Account is not linked to Kakao Talk, a button to sign up for Kaka Account is provided. Cannot be duplicated with KAKAO_TALK .KAKAO_LOGIN_ALL : Use all authentication types. |
iOS | authType | Set a type of user authentication. If not specified, nil is applied.KOAuthTypeTalk : Simple Login through Kakao Talk.KOAuthTypeStory : Simple Login through Kakao Story.KOAuthTypeAccount : Login by inputting Kakao Account and password on a webView.nil : No option specified. |
Since the SDK predefines a constant for each option above, you do not need to specify it separately.
If a user has already agreed by clicking [Accept and Continue] on Consent screen, the authorization code is issued without the Consent screen displayed. The Consent screen appears the first time when a user links with an app. To display the Consent screen again, unlink from an app and request an authorization code.
If a user logs in with Kakao Talk on the mobile web but is not redirected to your service page or app, it is a normal phenomenon. According to policy on smartphone OS, an app is not allowed to load other apps arbitrarily. Thus, you need to guide users to go back to your service web page in person after the login on the login page. If the users are in logged-in state when they go back to your service page, it is normal.
In the case of a web browser, to figure out if the user is successfully signed up,
For native apps, Kakao login authentication information is managed as a token. There are two types of tokens: an access token used to authenticate a user and a refresh token used to refresh your access token when it expires. Users can log in using the issued access token or refresh token before the tokens are expired as far as they have not logged out. Users do not need to verify user information with Kakao Talk or Kakao Account again during the token validity period.
Even though users are not logged out or tokens are not expired, users may fail to log in again using the tokens. In this case, check the followings:
If using a REST API, check the token information used to request logout.
In the case of the Kakao SDK, when requesting to log out, the SDK deletes your token and cookie, and then you are logged out regardless of the result of logout function. Thus, if you cannot log out, the failure may be caused by other issues, not related to the Logout API operation.
No. As of now, this feature is not available. Kakao Account supports the multi-device feature, which means that you can log in with Kakao Account on multiple devices. Thus, if you request to log out, you are logged out of the only device that you are currently using, and the logged-in status remains on the rest devices.
When you attempt to log in with another account after logging out, you may be logged in with the previous account. This issue occurs when the logout process has not been completed normally or a cookie is still stored in your web browser. If a user is logged out successfully, the cookie is deleted along with the access token and the refresh token when using the iOS or Android SDK.
If you use a REST API, only the access token and the refresh token are deleted, and Kakao Account cookies still remain. In this case, you may be logged in with the previous account when you try to authenticate again. Thus, delete the cookie on the web browser, and then retry login.
No. The service user ID is issued to each service user as a unique identifier. Thus, your service ID does not change even when you log out or delete your service account.
Even when a user has agreed to provide user information through the Simple Signup process, a specific scope (user information) may be empty. That is because the user has never entered the information while using the Kakao service. In this case, you can use the Provision after collecting information through Kakao Account option in [My Application] > [Kakao Login] > [Consent items]. Then, Kakao collects the required user information from the user and provides it to your service.
If the Provision after collecting information option is disabled so some user information required for a service is missing, the user is required to input the information when attempting to log in later. Then, update the user information as the user inputs.
However, a user refuses to provide information to Kakao, the item is empty even though you enable this option because Kakao does not retain the information. If the information is required to use your service, you must ask a user to input the information in person during the use of the service or allow the user to cancel the signup.
If the user has already agreed to provide the personal information to a third party before enabling this option, Kakao does not collect the user information even though the service requests consent again. Kakao can collect information after a user unlinks from the service and then re-logs in with Kakao Account.
If a user does not have the desired user information, the Required item is not displayed on the Consent screen even though you set the consent item (scope) to 'Required consent'.
In this case, use the 'Provision after collecting information through Kakao Account' feature. This feature allows you to ask users to input the user information on the Consent screen and to get consent to the use of the information. Here is a sample screen that requests a user to input additional information.
Note that you cannot use this option for the 'phone_number' scope.
Except for ID issued for each user or CI as authentication information, all user information is subject to change all the time. To update with the latest information, request the Retrieving user information API once logging in.
Yes. you can get the user information by requesting additional consent. If the information is set to 'Optional consent' item and a user does not agree to provide the information during the Simple Signup process, you can request consent again when the user attempts to use a feature that requires the information. However, if a user refuses to provide the information, you must not allow the user to use the feature.
See User information to check all types of the user information that Kakao provides.
However, to retrieve user information:
Yes. If you use the Retrieving consent details API, you can check which consent items a user has agreed to among the scopes set in your app.
You can also use the Retrieving the user information API. Check its response that includes the scopes that the user has agreed to and {FIELD_NAME}_needs_agreement that indicates the corresponding scope requires additional consent.
If you need user's email information but cannot retrieve,
has_email
is true
, the user has email information. However, the user may not have had email information when logging in with Kakao. In this case, request email information again by requesting additional consent.No. The Provision after collecting information option is not applicable for the 'Kakao account (phone number)' scope. Kakao gets a user's phone number saved in Kakao Talk linked to the user's Kakao Account. Thus, if a user does not use Kakao Talk, Kakao cannot get the user's phone number even though 'Kakao account (phone number)' is set to 'Required consent' item. In this case, you must collect a phone number separately in your service if phone numbers are required.
In this case, check the followings:
To see more about conditions to retrieve a list of friends, refer to Kakao Talk Social > Usage policy.
You can add links to an image, text, and button on a message sent through the Kakao Link and Kakao Talk messaging API. The link works according to the platform information specified in [My Application] > [Platform]. The link to launch your app on Android environment follows the Package name and the Market URL specified in [Platform]; on iOS environment, the Bundle ID and the Market URL specified for iOS platform; on web page, the Site domain specified for Web platform.
Even when you change a link path in [Tools]> [Message Template Builder] or specify a link path when configuring a message in the client or server, the link information specified in [Platform] is applied first. You can only add some information to the link information. For the Web domain, you can select one of the site domains registered in [Platform] and input the sub-path in person. For Android and iOS, you can specify parameters to be passed when launching an app.
You can set multiple link information for a link and a button depending on user's environment, and then users are directed differently according to the Messaging API’s internal priority system. In the case of the website link, it directs a user differently depending on the environment the user is using to access the link. You can specify the path to run the app for Windows and macOS respectively. When a user taps a link or button on mobile, an app launches if it is installed on the user's device. If not, the user is directed to the specified market to install the app.
To see more about a button and link component, refer to Message template components.
Even though you have set a button on a message, the message button may not appear depending on the Kakao Talk execution environments where a user checks the message or the platform settings. To prevent this, you must register a website domain in [My Application] > [Platform], and then the settings for Web is applied to a button as a common link. Thus, the button appears on a message regardless of a user's Kakao Talk execution environments. To see more about a link, refer to Message template components.
In this case, you firstly need to check if the app is installed on the device where a button to launch the app is tapped.
If installed, check if Custom URL Schemes are correctly set for the app by referring to Set Custom URL Scheme for Android SDK and Set URL scheme for iOS SDK.
If not installed, check if the Android and iOS market URLs of the app are set in [My Application] > [Platform].
Check if the Custom URL Schemes are correctly set for the app by referring to Set Custom URL Scheme for Android SDK and Set URL scheme for iOS SDK.
Links on a message sent through the Kakao Link or the Kakao Talk messaging API only work when the site domain is registered in the app's platform settings. When you use the Messaging API, you must register the information of the platform your service is using among Web, Android, and iOS. You must also update the platform information if changing a site address. Because the buttons and links on a message are set as you register in the platform settings, you must not use any unregistered domain address for a message link.
Kakao Sync provides the following two key features:
Refer to Kakao Sync for more details.
No. Kakao never accesses your service data. Kakao only provides information or performs internal processing in the Kakao platform as your service requests an API.
Of course. When you apply Kakao Sync, you can use the extended features of Kakao Login including Simple Signup. Refer to Kakao Sync for more details.
If you apply Kakao Sync Simple Signup, the signup process becomes very easy. You can get consent to the Terms of Service and receiving marketing information through Kakao Talk Channel from users, and ask users to input their user information on the Consent screen. Kakao Sync also allows you to use other Kakao Open APIs, such as the Kakao Talk Social API, so that you can retrieve a list of Kakao Talk friends who use the same service or share product information through Kakao Link.
Refer to Kakao Sync for more details.
Yes. You can apply Kakao Sync to your test app, which does not affect the service you are operating. To see how to set a test app, refer to Create a test app.
Yes. You can implement the process using the Auto-login feature. Depending on the user's signup status, you can show different pages, either a page with a logged-in status or a page with a logged-out status. This feature only works in the Kakao Talk in-app browser.
The Simple Signup feature is not provided as a default and only provided for the service that applies Kakao Sync. To use this feature, you must activate this feature in [My Application] > [Kakao Login] > [Simple Signup] menu after applying for Kakao Sync and passing a review.
Even though a user signs up through Kakao Sync Simple Signup, you must register the user as a member in your service's member database. If not, then the user is not completely signed up. Since Kakao cannot access your member database, we cannot add new member information ourselves. Make sure to implement a process that stores new user information in the service database internally.
Refer to Manage user accounts for more details.
There are two reasons for this issue:
For more information, refer to Apply Kakao Sync and User consent.
To figure out who has already been using the service, use one of the unique user information saved in Kakao Account received from Kakao. Usually, email or phone number is used. However, email and phone number cannot be identifiers because users can change their email or phone number at any time. Thus, we recommend using information that the Kakao platform provides as an identifier, service user ID. When a user's Kakao Account is linked to a service, Kakao issues a unique numeric value. This value issued for each user never changes even when the user deletes the account and re-create an account, which helps your service to identify users and check if a user has already been signed up.
It is difficult for Kakao to guide a specific method to handle this situation because each service has all different membership systems, user flows, and policies. Your service must create its own rules and policies to map users with the existing users to prevent users' confusion. Refer to Map existing members for more details.
No. Kakao Sync Simple Signup allows users to easily sign up without going through multiple signup pages. However, you may need to get consent to Terms of Service or request user information additionally depending on the service situation. In this case, request consent or information on your service page after a user logs in with Kakao.
Make sure to implement a process to collect additional user information only when the information is required. Otherwise, users may give up signing up in the middle of the process for collecting information. Refer to Manage user accounts for more details.
When a user deletes the account of the Kakao Sync service, you must:
If not complete the two things above, the user's account is not completely deleted. Make sure to delete the user information from your member database since Kakao cannot access your service database for deletion.
To see more about unlinking between a user's Kakao Account and a Kakao Sync service, see Logout and Unlink.
Even though users unlink from the service app, their status with the Kakao Talk Channel remains active. If your customers inquire about this issue, guide them to block the Kakao Talk Channel on the Kakao Talk app.
To delete a user's Kakao Account in your service, the account must be unlinked from all of the services. To figure out who attempts to delete the Kakao Account, set unlink callback, which notifies you of the user's unlink status. When you get unlink callback from Kakao, you can process the user's account in your service.
Check if the user information is completely deleted from your service's member database when the user deletes the account. For the user who used the same service with the same Kakao Account, the same user ID is assigned when the user is linked again. When unlinking from the service after deleting an account, all information related to the use of service is deleted, but the ID is reissued with the same value. If the information of the preexisting user remains, it may cause a problem. Thus, you must delete their information as soon as they delete the accounts in accordance with the service policy and related laws.
Even when a user deletes a Kakao Account in the service that applies Kakao Sync, the user still can see the service name on the Manage Connected Service page. If an account is not unlinked from the service, the account is not completely deleted. Thus, request unlink API for the user to unlink the user's account from your service.
You can see more about Kakao Sync and best practice in Service Introduction and Kakao Sync guide.