{"id":37087,"date":"2024-11-01T09:54:45","date_gmt":"2024-11-01T09:54:45","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37087"},"modified":"2024-11-01T11:42:17","modified_gmt":"2024-11-01T11:42:17","slug":"kotlin-android-app-development-course-creating-signup-and-login-features","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37087\/","title":{"rendered":"kotlin android app development course, creating signup and login features"},"content":{"rendered":"<p><body><\/p>\n<p>In this course, we will learn how to implement the sign-up and login functionalities in an Android app using Kotlin. We will cover various topics starting from basic screen layouts, user information handling, communication with the server, and data storage in the database. Ultimately, we will be able to implement working sign-up and login features through a simple example app.<\/p>\n<h2>Table of Contents<\/h2>\n<ul>\n<li><a href=\"#requirement\">1. Required Tools and Environment Setup<\/a><\/li>\n<li><a href=\"#project_setup\">2. Project Setup<\/a><\/li>\n<li><a href=\"#layout\">3. Layout Design<\/a><\/li>\n<li><a href=\"#signup_function\">4. Implementing Sign-Up Functionality<\/a><\/li>\n<li><a href=\"#login_function\">5. Implementing Login Functionality<\/a><\/li>\n<li><a href=\"#data_storage\">6. Data Storage and Management<\/a><\/li>\n<li><a href=\"#conclusion\">7. Conclusion<\/a><\/li>\n<\/ul>\n<h2 id=\"requirement\">1. Required Tools and Environment Setup<\/h2>\n<p>For Android app development, the following tools are needed:<\/p>\n<ul>\n<li>Android Studio: The official IDE for Android app development.<\/li>\n<li>Java Development Kit (JDK): Since Kotlin runs on the JVM, JDK is required.<\/li>\n<li>Gradle: A tool for building projects.<\/li>\n<\/ul>\n<p>In addition, we will add the libraries we will use to Gradle. After installing these tools, run Android Studio and create a new project.<\/p>\n<h2 id=\"project_setup\">2. Project Setup<\/h2>\n<p>When creating a new project, select the <strong>Empty Activity<\/strong> template and choose <strong>Kotlin<\/strong> as the language. Set the package name and save location, then click the <strong>Finish<\/strong> button to create the project.<\/p>\n<h2 id=\"layout\">3. Layout Design<\/h2>\n<p>To create the sign-up and login screens, we will create two XML layout files. Each layout will include EditText and Button components.<\/p>\n<h3>Login Screen Layout (login_activity.xml)<\/h3>\n<pre>\n    <code>\n    &lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n    &lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"&gt;\n\n        &lt;EditText\n            android:id=\"@+id\/editTextEmail\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:hint=\"Email\" \/&gt;\n\n        &lt;EditText\n            android:id=\"@+id\/editTextPassword\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:hint=\"Password\"\n            android:layout_below=\"@+id\/editTextEmail\"\n            android:inputType=\"textPassword\" \/&gt;\n\n        &lt;Button\n            android:id=\"@+id\/buttonLogin\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"Login\"\n            android:layout_below=\"@+id\/editTextPassword\" \/&gt;\n\n        &lt;TextView\n            android:id=\"@+id\/textViewSignUp\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"Don't have an account? Sign Up\"\n            android:layout_below=\"@+id\/buttonLogin\"\n            android:layout_marginTop=\"16dp\"\n            android:clickable=\"true\" \/&gt;\n\n    &lt;\/RelativeLayout&gt;\n    <\/code>\n    <\/pre>\n<h3>Sign-Up Screen Layout (signup_activity.xml)<\/h3>\n<pre>\n    <code>\n    &lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\n    &lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"&gt;\n\n        &lt;EditText\n            android:id=\"@+id\/editTextEmail\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:hint=\"Email\" \/&gt;\n\n        &lt;EditText\n            android:id=\"@+id\/editTextPassword\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:hint=\"Password\"\n            android:layout_below=\"@+id\/editTextEmail\"\n            android:inputType=\"textPassword\" \/&gt;\n\n        &lt;Button\n            android:id=\"@+id\/buttonSignUp\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"Sign Up\"\n            android:layout_below=\"@+id\/editTextPassword\" \/&gt;\n\n    &lt;\/RelativeLayout&gt;\n    <\/code>\n    <\/pre>\n<h2 id=\"signup_function\">4. Implementing Sign-Up Functionality<\/h2>\n<p>To implement the sign-up functionality, create a <strong>SignupActivity.kt<\/strong> file. This file will contain logic for receiving the user&#8217;s email and password and processing them.<\/p>\n<pre>\n    <code>\n    package com.example.yourapp\n\n    import android.content.Intent\n    import android.os.Bundle\n    import android.widget.Button\n    import android.widget.EditText\n    import android.widget.Toast\n    import androidx.appcompat.app.AppCompatActivity\n\n    class SignupActivity : AppCompatActivity() {\n\n        private lateinit var editTextEmail: EditText\n        private lateinit var editTextPassword: EditText\n        private lateinit var buttonSignUp: Button\n\n        override fun onCreate(savedInstanceState: Bundle?) {\n            super.onCreate(savedInstanceState)\n            setContentView(R.layout.signup_activity)\n\n            editTextEmail = findViewById(R.id.editTextEmail)\n            editTextPassword = findViewById(R.id.editTextPassword)\n            buttonSignUp = findViewById(R.id.buttonSignUp)\n\n            buttonSignUp.setOnClickListener {\n                val email = editTextEmail.text.toString()\n                val password = editTextPassword.text.toString()\n\n                if (email.isNotEmpty() && password.isNotEmpty()) {\n                    \/\/ TODO: Add server communication tasks here\n                    \/\/ Example: Move to login screen on successful sign-up\n                    Toast.makeText(this, \"Sign Up Successful\", Toast.LENGTH_SHORT).show()\n                    startActivity(Intent(this, LoginActivity::class.java))\n                } else {\n                    Toast.makeText(this, \"Please fill in all fields\", Toast.LENGTH_SHORT).show()\n                }\n            }\n        }\n    }\n    <\/code>\n    <\/pre>\n<h2 id=\"login_function\">5. Implementing Login Functionality<\/h2>\n<p>The login functionality can also be implemented in a similar manner. Create a <strong>LoginActivity.kt<\/strong> file and write the following code.<\/p>\n<pre>\n    <code>\n    package com.example.yourapp\n\n    import android.content.Intent\n    import android.os.Bundle\n    import android.widget.Button\n    import android.widget.EditText\n    import android.widget.Toast\n    import androidx.appcompat.app.AppCompatActivity\n\n    class LoginActivity : AppCompatActivity() {\n\n        private lateinit var editTextEmail: EditText\n        private lateinit var editTextPassword: EditText\n        private lateinit var buttonLogin: Button\n\n        override fun onCreate(savedInstanceState: Bundle?) {\n            super.onCreate(savedInstanceState)\n            setContentView(R.layout.login_activity)\n\n            editTextEmail = findViewById(R.id.editTextEmail)\n            editTextPassword = findViewById(R.id.editTextPassword)\n            buttonLogin = findViewById(R.id.buttonLogin)\n\n            buttonLogin.setOnClickListener {\n                val email = editTextEmail.text.toString()\n                val password = editTextPassword.text.toString()\n\n                if (email.isNotEmpty() && password.isNotEmpty()) {\n                    \/\/ TODO: Add server communication logic here\n                    \/\/ Move to the next screen on success, show error message on failure\n                    Toast.makeText(this, \"Login Successful\", Toast.LENGTH_SHORT).show()\n                    \/\/ Add code to move to the next screen\n                } else {\n                    Toast.makeText(this, \"Please fill in all fields\", Toast.LENGTH_SHORT).show()\n                }\n            }\n        }\n    }\n    <\/code>\n    <\/pre>\n<h2 id=\"data_storage\">6. Data Storage and Management<\/h2>\n<p>To save the user&#8217;s information during sign-up or login, you can set up a server or use a cloud service like Firebase. Here, we will implement it simply using Firebase.<\/p>\n<h3>Firebase Setup<\/h3>\n<p>To use Firebase&#8217;s Authentication feature, create a project in the Firebase console and connect it to your app. Add the Firebase SDK to Gradle and enable Firebase Authentication.<\/p>\n<pre>\n    <code>\n    \/\/ build.gradle (app-level)\n    dependencies {\n        implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'\n    }\n    <\/code>\n    <\/pre>\n<h3>Improving Sign-Up and Login Functionality<\/h3>\n<p>Now you can implement sign-up and login functionalities using Firebase Authentication.<\/p>\n<pre>\n    <code>\n    \/\/ SignupActivity.kt\n    import com.google.firebase.auth.FirebaseAuth\n\n    class SignupActivity : AppCompatActivity() {\n        \/\/ ...\n        private lateinit var auth: FirebaseAuth\n\n        override fun onCreate(savedInstanceState: Bundle?) {\n            \/\/ ...\n            auth = FirebaseAuth.getInstance()\n\n            buttonSignUp.setOnClickListener {\n                \/\/ ...\n                auth.createUserWithEmailAndPassword(email, password)\n                    .addOnCompleteListener(this) { task ->\n                        if (task.isSuccessful) {\n                            Toast.makeText(this, \"Sign Up Successful\", Toast.LENGTH_SHORT).show()\n                            startActivity(Intent(this, LoginActivity::class.java))\n                        } else {\n                            Toast.makeText(this, \"Sign Up Failed\", Toast.LENGTH_SHORT).show()\n                        }\n                    }\n            }\n        }\n    }\n    <\/code>\n    <\/pre>\n<pre>\n    <code>\n    \/\/ LoginActivity.kt\n    import com.google.firebase.auth.FirebaseAuth\n\n    class LoginActivity : AppCompatActivity() {\n        \/\/ ...\n        private lateinit var auth: FirebaseAuth\n\n        override fun onCreate(savedInstanceState: Bundle?) {\n            \/\/ ...\n            auth = FirebaseAuth.getInstance()\n\n            buttonLogin.setOnClickListener {\n                \/\/ ...\n                auth.signInWithEmailAndPassword(email, password)\n                    .addOnCompleteListener(this) { task ->\n                        if (task.isSuccessful) {\n                            Toast.makeText(this, \"Login Successful\", Toast.LENGTH_SHORT).show()\n                            \/\/ Move to the next screen\n                        } else {\n                            Toast.makeText(this, \"Login Failed\", Toast.LENGTH_SHORT).show()\n                        }\n                    }\n            }\n        }\n    }\n    <\/code>\n    <\/pre>\n<h2 id=\"conclusion\">7. Conclusion<\/h2>\n<p>In this course, we have looked closely at how to implement sign-up and login functionalities in an Android app using Kotlin. By using Android and Firebase, we can securely handle user information and provide a convenient user experience. Feel free to expand your app by adding more features.<\/p>\n<p>Additionally, through this example, you have learned the basic app structure and how to use Firebase, and you can build upon this knowledge to add various functionalities. Welcome to the world of Android development, and happy coding!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this course, we will learn how to implement the sign-up and login functionalities in an Android app using Kotlin. We will cover various topics starting from basic screen layouts, user information handling, communication with the server, and data storage in the database. Ultimately, we will be able to implement working sign-up and login features &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37087\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;kotlin android app development course, creating signup and login features&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[143],"tags":[],"class_list":["post-37087","post","type-post","status-publish","format-standard","hentry","category-kotlin-android-app-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>kotlin android app development course, creating signup and login features - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/37087\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"kotlin android app development course, creating signup and login features - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this course, we will learn how to implement the sign-up and login functionalities in an Android app using Kotlin. We will cover various topics starting from basic screen layouts, user information handling, communication with the server, and data storage in the database. Ultimately, we will be able to implement working sign-up and login features &hellip; \ub354 \ubcf4\uae30 &quot;kotlin android app development course, creating signup and login features&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37087\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:54:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:42:17+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37087\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37087\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"kotlin android app development course, creating signup and login features\",\"datePublished\":\"2024-11-01T09:54:45+00:00\",\"dateModified\":\"2024-11-01T11:42:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37087\/\"},\"wordCount\":450,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin Android app development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37087\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37087\/\",\"name\":\"kotlin android app development course, creating signup and login features - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:54:45+00:00\",\"dateModified\":\"2024-11-01T11:42:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37087\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37087\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37087\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"kotlin android app development course, creating signup and login features\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"kotlin android app development course, creating signup and login features - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/37087\/","og_locale":"ko_KR","og_type":"article","og_title":"kotlin android app development course, creating signup and login features - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this course, we will learn how to implement the sign-up and login functionalities in an Android app using Kotlin. We will cover various topics starting from basic screen layouts, user information handling, communication with the server, and data storage in the database. Ultimately, we will be able to implement working sign-up and login features &hellip; \ub354 \ubcf4\uae30 \"kotlin android app development course, creating signup and login features\"","og_url":"https:\/\/atmokpo.com\/w\/37087\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:54:45+00:00","article_modified_time":"2024-11-01T11:42:17+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37087\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37087\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"kotlin android app development course, creating signup and login features","datePublished":"2024-11-01T09:54:45+00:00","dateModified":"2024-11-01T11:42:17+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37087\/"},"wordCount":450,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin Android app development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37087\/","url":"https:\/\/atmokpo.com\/w\/37087\/","name":"kotlin android app development course, creating signup and login features - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:54:45+00:00","dateModified":"2024-11-01T11:42:17+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37087\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37087\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37087\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"kotlin android app development course, creating signup and login features"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=37087"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37087\/revisions"}],"predecessor-version":[{"id":37088,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37087\/revisions\/37088"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}