{"id":9366,"date":"2026-08-11T18:45:00","date_gmt":"2026-08-11T16:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=9366"},"modified":"2026-08-10T13:47:01","modified_gmt":"2026-08-10T11:47:01","slug":"google-ads-api-passkeys-klient-oauth-a-logowanie-pl","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/","title":{"rendered":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Google og\u0142osi\u0142o wym\u00f3g stosowania passkeys przy dost\u0119pie do Google Ads API 27.07.2026, a wdra\u017canie ruszy\u0142o 5 sierpnia. Od tego czasu w ka\u017cdym firmowym czacie wraca to samo pytanie w kolejnych wariantach: \u201eczy musimy wystawi\u0107 nowego klienta OAuth?\u201d. Nie trzeba. Wym\u00f3g dotyczy sposobu, w jaki loguje si\u0119 konto u\u017cytkownika stoj\u0105ce za autoryzacj\u0105. Klient OAuth nie jest przedmiotem tej zmiany, a istniej\u0105ce tokeny pozostaj\u0105 wa\u017cne, wi\u0119c w trakcie lektury tego tekstu nic nie przestanie dzia\u0142a\u0107. Potrzebna jest nie pospieszna migracja, lecz rzetelna inwentaryzacja tego, kt\u00f3re integracje zale\u017c\u0105 od zdolno\u015bci cz\u0142owieka do zalogowania si\u0119.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Logowanie jest obj\u0119te wymogiem, klient OAuth nie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rozr\u00f3\u017cnienie jest w\u0105skie i to ono przes\u0105dza o ca\u0142ej reszcie. Je\u017celi integracj\u0119 autoryzowa\u0142a osoba, kt\u00f3ra przeklika\u0142a ekran zgody w\u0142asnym kontem Google, logowanie tego konta podlega wymogowi passkey. Je\u017celi integracja dzia\u0142a przez service account, nie podlega: service accounts s\u0105 wy\u0142\u0105czone. To samo API, ta sama biblioteka kliencka, te same customer IDs; jedyna r\u00f3\u017cnica polega na tym, kto si\u0119 uwierzytelni\u0142.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wynikaj\u0105 z tego dwie rzeczy. \u017baden dashboard nie zga\u015bnie w wyznaczonym dniu: istniej\u0105ce tokeny nadal dzia\u0142aj\u0105, wi\u0119c punktem zapalnym jest dopiero moment, w kt\u00f3rym kto\u015b b\u0119dzie musia\u0142 zalogowa\u0107 si\u0119 ponownie, po przypadkowym uniewa\u017cnieniu tokena albo po przebudowie maszyny. Ryzyko le\u017cy za\u015b w ludziach, nie w kodzie. Repozytorium nie powie, kto trzyma refresh token.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jedno sprostowanie, poniewa\u017c ta teza wci\u0105\u017c kr\u0105\u017cy: cz\u0119\u015b\u0107 opracowa\u0144 podaje, \u017ce dla obj\u0119tych kont obowi\u0105zuje siedmiodniowy okres blokady. W og\u0142oszeniu nie ma o tym mowy. Taki termin nie istnieje, a plan migracji oparty na nim wymusi po\u015bpiech przy niew\u0142a\u015bciwych zadaniach.<\/p>\n\n\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-adspasskey-pl.png\" width=\"1120\" height=\"656\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Dwie \u015bcie\u017cki do punktu kontrolnego: integracja autoryzowana kontem osobistym musi przej\u015b\u0107 wym\u00f3g passkey, a konto us\u0142ugi go omija\">\n<figcaption>Obowi\u0105zek dotyczy konta, kt\u00f3re autoryzowa\u0142o integracj\u0119, a nie klienta OAuth. Co idzie przez konto us\u0142ugi, mija punkt kontrolny; co idzie przez cz\u0142owieka \u2014 nie.<\/figcaption>\n<\/figure>\n\n\n<h2 class=\"wp-block-heading\">2. Nale\u017cy spisa\u0107, kto co autoryzuje<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Punktem wyj\u015bcia jest artefakt, kt\u00f3rego prawie nikt nie posiada: spisana macierz w\u0142asnych dost\u0119p\u00f3w. Plik YAML w repozytorium to pocz\u0105tek, ale niewielka tabela SQLite sprawdzi si\u0119 lepiej, poniewa\u017c pr\u0119dzej czy p\u00f3\u017aniej pojawi si\u0119 potrzeba jej odpytywania. Znaczenie maj\u0105 te kolumny, kt\u00f3rych za p\u00f3\u0142 roku nie da si\u0119 odtworzy\u0107 z pami\u0119ci.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-sql\">create table ads_authorization (\n  integration     text primary key,\n  auth_type       text not null check (auth_type in ('user_account','service_account')),\n  google_account  text,\n  config_path     text,\n  token_store     text,\n  owner           text not null,\n  deputy          text,\n  customer_ids    text,\n  last_verified   date\n);\n\ninsert into ads_authorization values\n ('nightly-cost-load','user_account','ads-bot@example.com','\/srv\/etl\/conf\/ads.yaml',\n  'vault:kv\/ads\/refresh','l.wojcik','m.kowalski','123-456-7890,222-333-4444','2026-08-08'),\n ('bi-connector','service_account',null,'\/srv\/bi\/sa.json',\n  'gcp-secret-manager','platform-team',null,'123-456-7890','2026-08-08');<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>auth_type:<\/strong> dzieli ca\u0142e \u015brodowisko na obj\u0119te i nieobj\u0119te wymogiem jedn\u0105 klauzul\u0105 <code>where<\/code>.<\/li>\n<li><strong>deputy:<\/strong> pole, o kt\u00f3re w tym wymogu naprawd\u0119 chodzi. Je\u017celi osoba wpisana w <code>owner<\/code> jest nieobecna przez trzy tygodnie, kto si\u0119 zaloguje?<\/li>\n<li><strong>token_store:<\/strong> prywatny katalog domowy nie jest tutaj warto\u015bci\u0105, lecz znaleziskiem audytowym.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">3. Odnalezienie autoryzacji, o kt\u00f3rych wszyscy zapomnieli<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Inwentaryzacja jest warta tyle, ile jej pokrycie, a najbardziej bol\u0105 w\u0142a\u015bnie te wpisy, o kt\u00f3rych si\u0119 zapomnia\u0142o. Trzeba przeczesa\u0107 drzewa konfiguracji, a nast\u0119pnie zestawi\u0107 wynik z tym, co zosta\u0142o spisane.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">grep -rIls -e refresh_token --include='*.y*ml' --include='*.json' --include='*.env' \\\n  \/etc \/srv \/opt \/home<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-python\">#!\/usr\/bin\/env python3\n\"\"\"Klasyfikuje lokalne konfiguracje OAuth i zestawia je z inwentaryzacj\u0105 dost\u0119p\u00f3w.\"\"\"\nimport pathlib, re, sqlite3, sys\n\nroot = pathlib.Path(sys.argv[1])\npatterns = (\"*.yaml\", \"*.yml\", \"*.json\", \"*.env\", \"*.ini\")\nhas_refresh = re.compile(r\"refresh_token\\s*[:=]\\s*\\S\")\nis_service = re.compile(r\"service_account|private_key_id\")\n\ndb = sqlite3.connect(\"access.db\")\nknown = {row[0] for row in db.execute(\"select config_path from ads_authorization\")}\n\nfor pattern in patterns:\n    for path in sorted(root.rglob(pattern)):\n        text = path.read_text(errors=\"ignore\")\n        if not (has_refresh.search(text) or is_service.search(text)):\n            continue\n        kind = \"service_account\" if is_service.search(text) else \"user_account\"\n        flag = \"\" if str(path) in known else \"  UNTRACKED\"\n        print(f\"{kind:16}{path}{flag}\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Skrypt nale\u017cy uruchomi\u0107 na ka\u017cdym ho\u015bcie, kt\u00f3ry komunikuje si\u0119 z API, \u0142\u0105cznie z laptopem analityka, o kt\u00f3rym nikt nie chce wspomina\u0107. Ka\u017cdy wiersz <code>UNTRACKED<\/code> to albo pozycja brakuj\u0105ca w inwentaryzacji, albo po\u015bwiadczenie do uniewa\u017cnienia jeszcze dzisiaj. Ka\u017cdy wiersz <code>user_account<\/code> to osoba, kt\u00f3r\u0105 trzeba teraz wskaza\u0107 z imienia i nazwiska.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. \u015acie\u017cka awaryjna dla dost\u0119p\u00f3w wsp\u00f3\u0142dzielonych i agencyjnych<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Teraz cz\u0119\u015b\u0107 operacyjna. Dla ka\u017cdego wiersza <code>user_account<\/code> trzeba z g\u00f3ry ustali\u0107, co si\u0119 dzieje, gdy dana osoba jest niedost\u0119pna, poniewa\u017c logowanie wymagaj\u0105ce passkey wymaga te\u017c cz\u0142owieka, kt\u00f3ry ten passkey posiada.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Nale\u017cy wskaza\u0107 zast\u0119pc\u0119 z dost\u0119pem do tego samego konta Google, zgodnie z wewn\u0119trzn\u0105 polityk\u0105, i odnotowa\u0107 go w macierzy.<\/li>\n<li>Refresh token trzeba przenie\u015b\u0107 z prywatnych plik\u00f3w do firmowego magazynu sekret\u00f3w, tak aby ponowne uwierzytelnienie pozosta\u0142o jedynym krokiem wymagaj\u0105cym udzia\u0142u cz\u0142owieka.<\/li>\n<li>Dla ka\u017cdej integracji warto odnotowa\u0107, kt\u00f3re customer IDs przestan\u0105 raportowa\u0107, je\u017celi dana autoryzacja przestanie dzia\u0142a\u0107. To jest promie\u0144 ra\u017cenia i to on wyznacza kolejno\u015b\u0107 prac.<\/li>\n<li>W uk\u0142adach agencyjnych trzeba ustali\u0107 na pi\u015bmie, kt\u00f3ra strona trzyma autoryzacj\u0119 i do kogo dzwoni si\u0119 w pi\u0105tkowy wiecz\u00f3r. Nast\u0119pnie nale\u017cy sprawdzi\u0107, czy da si\u0119 tam zastosowa\u0107 service account, poniewa\u017c takie wiersze wychodz\u0105 ca\u0142kowicie poza zakres wymogu.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-sql\">select integration, google_account, owner, customer_ids\nfrom ads_authorization\nwhere auth_type = 'user_account'\n  and (deputy is null or last_verified &lt; date('now','-90 day'))\norder by owner;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To zapytanie warto umie\u015bci\u0107 w kwartalnym zadaniu cron i wysy\u0142a\u0107 jego wynik na w\u0142asny adres e-mail. Pusty zbi\u00f3r wynik\u00f3w to ca\u0142y przegl\u0105d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Podsumowanie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Powsta\u0142y trzy niewielkie rzeczy: tabela zapisuj\u0105ca, kt\u00f3ra integracja jest autoryzowana przez kt\u00f3re konto, przemiatanie konfiguracji odnajduj\u0105ce to, czego nikt nie spisa\u0142, oraz zapytanie wypisuj\u0105ce ka\u017cdy pojedynczy punkt awarii pozbawiony zast\u0119pcy. Nic z tego nie jest specyficzne dla Google. Odpowiada to na pytanie, kt\u00f3re pr\u0119dzej czy p\u00f3\u017aniej zada ka\u017cde API z cz\u0142owiekiem w \u0142a\u0144cuchu autoryzacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zyskiem jest spok\u00f3j. Istniej\u0105ce tokeny nadal dzia\u0142aj\u0105, service accounts s\u0105 wy\u0142\u0105czone, klient OAuth pozostaje nietkni\u0119ty, a siedmiodniowej blokady, kt\u00f3r\u0105 powtarzaj\u0105 fora, w og\u0142oszeniu w og\u00f3le nie ma. Przed podj\u0119ciem dzia\u0142a\u0144 na podstawie jakiegokolwiek streszczenia, r\u00f3wnie\u017c tego, nale\u017cy si\u0119gn\u0105\u0107 do orygina\u0142u: <a href=\"https:\/\/ads-developers.googleblog.com\/2026\/07\/passkey-authentication-requirement-for.html\">Passkey authentication requirement for the Google Ads API<\/a>. Zaoszcz\u0119dzony czas najlepiej po\u015bwi\u0119ci\u0107 tym wierszom macierzy, w kt\u00f3rych <code>deputy<\/code> wci\u0105\u017c pozostaje puste.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wym\u00f3g stosowania passkeys, kt\u00f3rego wdra\u017canie ruszy\u0142o 5 sierpnia, dotyczy konta u\u017cytkownika stoj\u0105cego za autoryzacj\u0105, a nie klienta OAuth; service accounts s\u0105 z niego wy\u0142\u0105czone.<\/p>\n","protected":false},"author":1,"featured_media":9381,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[92038,92074,92051,92077],"class_list":["post-9366","post","type-post","status-publish","format-standard","hentry","category-digital-marketing-pl","tag-marketing-cyfrowy-pl-pl","tag-google-ads-pl","tag-rest-api-pl","tag-web-security-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie - Lukas Wojcik - Blog<\/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:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Wym\u00f3g stosowania passkeys, kt\u00f3rego wdra\u017canie ruszy\u0142o 5 sierpnia, dotyczy konta u\u017cytkownika stoj\u0105cego za autoryzacj\u0105, a nie klienta OAuth; service accounts s\u0105 z niego wy\u0142\u0105czone.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-11T16:45:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"luky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"luky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie\",\"datePublished\":\"2026-08-11T16:45:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/\"},\"wordCount\":899,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg\",\"keywords\":[\"Digital Marketing\",\"Google Ads\",\"REST API\",\"Web Security\"],\"articleSection\":[\"Digital Marketing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/\",\"name\":\"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg\",\"datePublished\":\"2026-08-11T16:45:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/author\\\/luky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie - Lukas Wojcik - Blog","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:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/","og_locale":"en_US","og_type":"article","og_title":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie - Lukas Wojcik - Blog","og_description":"Wym\u00f3g stosowania passkeys, kt\u00f3rego wdra\u017canie ruszy\u0142o 5 sierpnia, dotyczy konta u\u017cytkownika stoj\u0105cego za autoryzacj\u0105, a nie klienta OAuth; service accounts s\u0105 z niego wy\u0142\u0105czone.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-11T16:45:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg","type":"image\/jpeg"}],"author":"luky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"luky","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie","datePublished":"2026-08-11T16:45:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/"},"wordCount":899,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg","keywords":["Digital Marketing","Google Ads","REST API","Web Security"],"articleSection":["Digital Marketing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/","name":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg","datePublished":"2026-08-11T16:45:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-9366-google-ads-api-i-passkeys-klient-oauth-jest-w-porzad.jpg","width":1200,"height":630,"caption":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/google-ads-api-passkeys-klient-oauth-a-logowanie-pl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Google Ads API i passkeys: klient OAuth jest w porz\u0105dku, logowanie ju\u017c nie"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"],"url":"https:\/\/www.lukaswojcik.com\/blog\/author\/luky\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=9366"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9366\/revisions"}],"predecessor-version":[{"id":9458,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9366\/revisions\/9458"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/9381"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=9366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=9366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=9366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}