Kakao Social Connection Failure due to Locked 'profile' Scope (KOE205 Error) - Standard Marketplace Integration

Hi @JayMoon000

Welcome to the Auth0 Community!

As you have stated, Kakao deprecated the unified, legacy profile scope in favor of individual granular consent items (profile_nickname and profile_image), any new Kakao applications (including verified Biz Apps) that attempt to use Auth0’s native Marketplace Social Connection are immediately blocked by Kakao’s authorization server with a KOE205 (Invalid Scope: profile) error.

  • The Problem Root Cause: Auth0’s standard Kakao Social Connection integration is maintained externally and has indeed fallen out of sync with Kakao’s updated scope/consent specifications.

  • Because Kakao strictly enforces the minimum disclosure principle, they completely reject requests containing unauthorized scopes (like profile), leading to the KOE205 error .

  • Patch Feasibility: Updating the native Marketplace Connection template is a top priority for developers targeting the South Korean market. However, because this connection is managed in tandem with integration partners (OSC Korea Co., Ltd.), there is no immediate patch scheduled at this time .

  • Is there an internal backend toggle? No. There is no hidden tenant flag, API toggle, or metadata switch that can selectively unlock the legacy permission checkbox in the standard Kakao Social Connection UI.

While you noted an understandable hesitation toward “non-standard, fragile workarounds,” in the Auth0 ecosystem, a Custom Social Connection is the officially prescribed, fully supported architectural pattern to address provider specification mismatches. This has also been stated in an old Auth0 community post.

[SOLUTION]

Step 1: Create the Custom Social Connection

  1. In your Auth0 Dashboard, navigate to Authentication > Social Connections.

  2. Click Create Connection (or the + icon)

  3. Scroll to the very bottom and select Create Custom

  4. Set the parameters exactly as follows:

    • Connection Name: Kakao-Custom (or Kakao)

    • Authorization URL: https://kauth.kakao.com/oauth/authorize

    • Token URL: https://kauth.kakao.com/oauth/token

    • Scope: profile_nickname profile_image account_email (This strictly bypasses the deprecated profile scope)

    • Client ID: (Your Kakao REST API Key)

    • Client Secret: (Your Kakao Login Client Secret under the “Security” tab)

Step 2: Use the Standard User Profile Script

To map Kakao’s JSON payload cleanly into Auth0’s standardized user object format, use the following robust script in your Custom Connection setup:

function fetchUserProfile(accessToken, context, callback) {
  request.get(
    {
      url: "https://kapi.kakao.com/v2/user/me",
      headers: {
        Authorization: "Bearer " + accessToken,
      },
    },
    (err, resp, body) => {
      if (err) {
        return callback(err);
      }
      if (resp.statusCode !== 200) {
        return callback(new Error("Failed to fetch profile: " + body));
      }

      let bodyParsed;
      try {
        bodyParsed = JSON.parse(body);
      } catch (jsonError) {
        return callback(new Error("Invalid JSON response: " + body));
      }

      // Check if profile exists safely
      const kAccount = bodyParsed.kakao_account || {};
      const kProfile = kAccount.profile || {};

      const profile = {
        user_id: bodyParsed.id,
        name: kProfile.nickname || "",
        nickname: kProfile.nickname || "",
        picture: kProfile.thumbnail_image_url || kProfile.profile_image_url || "",
        email: kAccount.email || "",
        email_verified: kAccount.is_email_verified || false,
      };

      callback(null, profile);
    }
  );
}

Step 3: Register the Redirect URI

Since this is a Custom Connection, your Auth0 Redirect URI will need to match the new connection.

  1. In your Kakao Developers Console, go to Kakao Login > Redirect URI.

  2. Add your tenant’s standard redirect callback:
    https://dev-4p22e0213s43i3im.us.auth0.com/login/callback

Kind Regards,
Nik