{"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-10-24T02:32:30","modified_gmt":"2026-10-24T00:32:30","slug":"wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/","title":{"rendered":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje"},"content":{"rendered":"<p>Google og\u0142osi\u0142o 27 lipca 2026 r. wym\u00f3g passkey dla Google Ads API; wdra\u017canie rozpocz\u0119\u0142o si\u0119 5 sierpnia. Kluczowy jest dok\u0142adny moment zastosowania: na obj\u0119tych kontach passkey jest wymagany w <strong>procesie autoryzacji u\u017cytkownika tworz\u0105cym nowy token od\u015bwie\u017cania OAuth<\/strong>. Og\u0142oszenie nie wymaga wymiany klienta OAuth.<\/p>\n<p>Istniej\u0105ce tokeny od\u015bwie\u017cania nie trac\u0105 wa\u017cno\u015bci z powodu tej regu\u0142y. Zwyk\u0142a wymiana wa\u017cnego tokena od\u015bwie\u017cania na token dost\u0119pu nie wymaga ponownego potwierdzenia passkey. Nie jest to gwarancja bezterminowej wa\u017cno\u015bci: cofni\u0119cie dost\u0119pu, limity token\u00f3w, brak aktywno\u015bci lub inne zasady dost\u0119pu nadal mog\u0105 przerwa\u0107 integracj\u0119. Aktualna dokumentacja bezpiecze\u0144stwa opisuje stopniowe wdra\u017canie; sama data rozpocz\u0119cia nie potwierdza terminu aktywacji dla ka\u017cdego konta.<\/p>\n<h2>1. Trzy r\u00f3\u017cne sytuacje uwierzytelniania<\/h2>\n<ul><li><strong>Nowa autoryzacja u\u017cytkownika:<\/strong> po obj\u0119ciu konta regu\u0142\u0105 wymagany jest passkey. Samo has\u0142o, SMS ani TOTP nie zast\u0119puj\u0105 tego potwierdzenia.<\/li><li><strong>Istniej\u0105cy token od\u015bwie\u017cania:<\/strong> regu\u0142a nie wymusza ponownej autoryzacji tylko w celu uzyskania kolejnego tokena dost\u0119pu.<\/li><li><strong>Proces konta us\u0142ugi:<\/strong> nie jest obj\u0119ty tym konkretnym wymogiem. Google zaleca ten proces dla odpowiednich zada\u0144 automatycznych lub offline. Nadal potrzebne s\u0105 uprawnienia konta i ochrona po\u015bwiadcze\u0144.<\/li><\/ul>\n<p>Nowy passkey mo\u017ce podlega\u0107 siedmiodniowemu okresowi uzyskiwania zaufania. Nie oznacza to og\u00f3lnej blokady konta ani odr\u0119bnego siedmiodniowego czasu wa\u017cno\u015bci tokena od\u015bwie\u017cania zewn\u0119trznej aplikacji OAuth w statusie Testing. Plan odtworzenia dost\u0119pu musi uwzgl\u0119dnia\u0107 rzeczywisty spos\u00f3b logowania i zasady konta.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-9366-20261024.png\" width=\"1120\" height=\"656\" loading=\"lazy\" alt=\"Trzy procesy uwierzytelniania Google Ads API i zakres wymogu passkey\"><figcaption>Nowa autoryzacja u\u017cytkownika, bie\u017c\u0105ce u\u017cycie tokena od\u015bwie\u017cania i uwierzytelnianie konta us\u0142ugi to r\u00f3\u017cne procesy. Regu\u0142a passkey nie obejmuje automatycznie ka\u017cdego zwyk\u0142ego logowania Google.<\/figcaption><\/figure>\n<h2>2. Inwentaryzacja dost\u0119p\u00f3w bez kopiowania sekret\u00f3w<\/h2>\n<p>Przy niewielkim zbiorze wystarczy dokument z kontrol\u0105 dost\u0119pu; SQLite u\u0142atwia powtarzalne zapytania. Poni\u017cszy przyk\u0142ad przechowuje to\u017csamo\u015bci, odpowiedzialno\u015b\u0107 i odwo\u0142ania. Warto\u015bci token\u00f3w, klucze prywatne i kody odzyskiwania nie powinny trafia\u0107 do tej tabeli ani repozytorium. Wiersz konta us\u0142ugi powinien zawiera\u0107 rzeczywisty adres e-mail tego konta zamiast pustej to\u017csamo\u015bci.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">CREATE<\/span> <span class=\"cbb-keyword\">TABLE<\/span> <span class=\"cbb-function\">ads_authorization<\/span> (\n<\/span><span class=\"cbb-line\">  integration <span class=\"cbb-type\">TEXT<\/span> <span class=\"cbb-keyword\">PRIMARY<\/span> <span class=\"cbb-keyword\">KEY<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>,\n<\/span><span class=\"cbb-line\">  auth_type <span class=\"cbb-type\">TEXT<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span> <span class=\"cbb-keyword\">CHECK<\/span> (auth_type <span class=\"cbb-keyword\">IN<\/span>\n<\/span><span class=\"cbb-line\">    (<span class=\"cbb-string\">'user_account'<\/span>, <span class=\"cbb-string\">'service_account'<\/span>, <span class=\"cbb-string\">'unknown'<\/span>)),\n<\/span><span class=\"cbb-line\">  principal <span class=\"cbb-type\">TEXT<\/span>,\n<\/span><span class=\"cbb-line\">  config_path <span class=\"cbb-type\">TEXT<\/span>,\n<\/span><span class=\"cbb-line\">  token_store_reference <span class=\"cbb-type\">TEXT<\/span>,\n<\/span><span class=\"cbb-line\">  owner <span class=\"cbb-type\">TEXT<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>,\n<\/span><span class=\"cbb-line\">  deputy <span class=\"cbb-type\">TEXT<\/span>,\n<\/span><span class=\"cbb-line\">  recovery_plan_reference <span class=\"cbb-type\">TEXT<\/span>,\n<\/span><span class=\"cbb-line\">  customer_ids <span class=\"cbb-type\">TEXT<\/span>,\n<\/span><span class=\"cbb-line\">  last_verified <span class=\"cbb-type\">TEXT<\/span>\n<\/span><span class=\"cbb-line\">);\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Illustrative metadata only; never insert tokens or private keys.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">INSERT<\/span> <span class=\"cbb-keyword\">INTO<\/span> ads_authorization <span class=\"cbb-keyword\">VALUES<\/span>\n<\/span><span class=\"cbb-line\"> (<span class=\"cbb-string\">'nightly-cost-load'<\/span>, <span class=\"cbb-string\">'user_account'<\/span>, <span class=\"cbb-string\">'analyst@example.com'<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-string\">'\/srv\/adops\/config\/ads.yaml'<\/span>, <span class=\"cbb-string\">'vault:kv\/ads\/refresh'<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-string\">'analytics-team'<\/span>, <span class=\"cbb-string\">'platform-team'<\/span>, <span class=\"cbb-string\">'runbook:ads-reauthorization'<\/span>,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-string\">'1234567890'<\/span>, <span class=\"cbb-constant\">NULL<\/span>);<\/span><\/code><\/pre><\/figure>\n<p><code>owner<\/code> okre\u015bla odpowiedzialno\u015b\u0107 operacyjn\u0105. <code>deputy<\/code> wskazuje drug\u0105 odpowiedzialn\u0105 osob\u0119 lub zesp\u00f3\u0142, a nie zgod\u0119 na wsp\u00f3\u0142dzielenie osobistej to\u017csamo\u015bci Google. <code>recovery_plan_reference<\/code> prowadzi do przetestowanej procedury: przyk\u0142adowo ponownej autoryzacji przez osobno uprawnione konto z odpowiednim dost\u0119pem Ads i kontrolowanej zmiany po\u015bwiadcze\u0144. Przy wsp\u00f3\u0142dzielonej infrastrukturze inwentaryzacja wymaga tak\u017ce klienta OAuth, relacji konta mened\u017cera i \u015brodowiska po\u015bwiadcze\u0144.<\/p>\n<h2>3. Wyszukiwanie wskaz\u00f3wek bez wy\u015bwietlania po\u015bwiadcze\u0144<\/h2>\n<p>Przeszukanie ograniczonego zakresu plik\u00f3w mo\u017ce ujawni\u0107 brakuj\u0105ce wpisy. Poni\u017csze polecenie GNU grep wypisuje wy\u0142\u0105cznie nazwy plik\u00f3w i uwzgl\u0119dnia typowe klucze JSON w cudzys\u0142owach, zapis camelCase oraz nazwy zmiennych \u015brodowiskowych. Katalog jest przyk\u0142adem wymagaj\u0105cym zast\u0105pienia przez jawnie zatwierdzony zakres konfiguracji.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\"># Only an explicitly approved configuration directory; filenames only.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">grep<\/span> <span class=\"cbb-attr\">-rIlEi<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--include<\/span>=<span class=\"cbb-string\">'*.yaml'<\/span> <span class=\"cbb-attr\">--include<\/span>=<span class=\"cbb-string\">'*.yml'<\/span> <span class=\"cbb-attr\">--include<\/span>=<span class=\"cbb-string\">'*.json'<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--include<\/span>=<span class=\"cbb-string\">'*.env'<\/span> <span class=\"cbb-attr\">--include<\/span>=<span class=\"cbb-string\">'*.ini'<\/span> <span class=\"cbb-attr\">--include<\/span>=<span class=\"cbb-string\">'*.properties'<\/span> \\\n<\/span><span class=\"cbb-line\">  -- <span class=\"cbb-string\">'refresh&#91;_-&#93;?token|service_account|private_key_id|json_key_file_path|jsonKeyFilePath|serviceAccountSecretsPath'<\/span> \\\n<\/span><span class=\"cbb-line\">  \/srv\/adops\/config<\/span><\/code><\/pre><\/figure>\n<p>Kod wyj\u015bcia 0 oznacza trafienia, 1 brak trafie\u0144, a 2 b\u0142\u0105d. B\u0142\u0119dy uprawnie\u0144 musz\u0105 pozosta\u0107 widoczne. Trafienie nie potwierdza aktywnej autoryzacji Google Ads: komentarze, przyk\u0142ady, inne API i nieaktualne pliki mog\u0105 zawiera\u0107 te same terminy. Brak trafie\u0144 r\u00f3wnie\u017c nie dowodzi kompletno\u015bci. Odwo\u0142ania do magazynu sekret\u00f3w, zmienne uruchomieniowe, kontenery, zadania CI i zarz\u0105dzane konektory mog\u0105 nie pozostawia\u0107 pasuj\u0105cego pliku lokalnego.<\/p>\n<p>Ka\u017cde trafienie wymaga por\u00f3wnania z konfiguracj\u0105 wdro\u017cenia i inwentaryzacj\u0105. Natychmiastowe uniewa\u017cnienie nieznanego po\u015bwiadczenia mo\u017ce przerwa\u0107 zale\u017cno\u015b\u0107 produkcyjn\u0105. Najpierw potrzebne jest ustalenie odpowiedzialno\u015bci, rzeczywistego u\u017cycia oraz planu zast\u0105pienia lub wycofania; podejrzenie przej\u0119cia po\u015bwiadcze\u0144 wymaga w\u0142a\u015bciwej procedury incydentowej.<\/p>\n<h2>4. Odtworzenie dost\u0119pu z oddzielnymi to\u017csamo\u015bciami<\/h2>\n<ol><li>Ka\u017cdej osobie administruj\u0105cej zapewni\u0107 indywidualne konto z wymaganym dost\u0119pem Ads. Wskaz\u00f3wki Google Ads odradzaj\u0105 wsp\u00f3\u0142dzielone to\u017csamo\u015bci; zast\u0119pstwo nie powinno polega\u0107 na przej\u0119ciu cudzego passkey.<\/li><li>Dla integracji autoryzowanych przez u\u017cytkownika udokumentowa\u0107 konto i dozwolon\u0105 \u015bcie\u017ck\u0119 ponownej autoryzacji. Token innego konta ma uprawnienia tego konta i wymaga sprawdzenia wobec potrzebnych customer IDs.<\/li><li>Chroni\u0107 tokeny od\u015bwie\u017cania i po\u015bwiadczenia us\u0142ug w zatwierdzonym magazynie sekret\u00f3w. Przebudowa serwera sama nie uniewa\u017cnia tokena, lecz utrata po\u015bwiadczenia mo\u017ce wymusi\u0107 ponown\u0105 autoryzacj\u0119.<\/li><li>Oceni\u0107 konta us\u0142ug dla zada\u0144 bez nadzoru. Potrzebny jest jawny dost\u0119p Ads oraz wymagana konfiguracja API; zmiana to\u017csamo\u015bci nie sprowadza si\u0119 do zmiany nazwy pliku. Przy dost\u0119pie przez konto mened\u017cera mo\u017ce by\u0107 wymagane <code>login-customer-id<\/code>.<\/li><li>Sprawdza\u0107 procedur\u0119 odtworzenia po zmianach kadrowych, uprawnie\u0144, po\u015bwiadcze\u0144 lub infrastruktury oraz w regularnym cyklu kontroli.<\/li><\/ol>\n<p>Poni\u017csze zapytanie SQLite wskazuje niepe\u0142ne lub nieaktualne wpisy zar\u00f3wno kont u\u017cytkownik\u00f3w, jak i kont us\u0142ug. Okres 90 dni jest przyk\u0142adow\u0105 regu\u0142\u0105 operacyjn\u0105, a nie terminem Google. Daty powinny mie\u0107 zweryfikowany format <code>YYYY-MM-DD<\/code>; nieznany termin ostatniej kontroli musi pozostawa\u0107 widoczny.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> integration, auth_type, principal, owner, customer_ids\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> ads_authorization\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> auth_type = <span class=\"cbb-string\">'unknown'<\/span>\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-function\">NULLIF<\/span>(<span class=\"cbb-function\">TRIM<\/span>(principal), <span class=\"cbb-string\">''<\/span>) <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-function\">NULLIF<\/span>(<span class=\"cbb-function\">TRIM<\/span>(deputy), <span class=\"cbb-string\">''<\/span>) <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-function\">NULLIF<\/span>(<span class=\"cbb-function\">TRIM<\/span>(recovery_plan_reference), <span class=\"cbb-string\">''<\/span>) <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-type\">date<\/span>(last_verified) <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-type\">date<\/span>(last_verified, <span class=\"cbb-string\">'+0 days'<\/span>) &lt;&gt; last_verified\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-type\">date<\/span>(last_verified) &gt; <span class=\"cbb-type\">date<\/span>(<span class=\"cbb-string\">'now'<\/span>)\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">OR<\/span> <span class=\"cbb-type\">date<\/span>(last_verified) &lt; <span class=\"cbb-type\">date<\/span>(<span class=\"cbb-string\">'now'<\/span>, <span class=\"cbb-string\">'-90 days'<\/span>)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> owner, integration;<\/span><\/code><\/pre><\/figure>\n<p>Pusty wynik oznacza wy\u0142\u0105cznie spe\u0142nienie tych zapisanych kryteri\u00f3w. Nie dowodzi kompletno\u015bci spisu, dzia\u0142ania passkey ani wystarczaj\u0105cych uprawnie\u0144 Ads. Oddzielne dowody zapewniaj\u0105 kontrolowana pr\u00f3ba dost\u0119pu tylko do odczytu i udokumentowana kontrola odtworzenia.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2><h3>Czy zmiana wymaga passkey przy ka\u017cdym logowaniu do interfejsu Google Ads?<\/h3><p>Nie. Wym\u00f3g API dotyczy nowych token\u00f3w od\u015bwie\u017cania w obj\u0119tym procesie u\u017cytkownika. Google Ads mo\u017ce osobno wymaga\u0107 passkey dla dzia\u0142a\u0144 wra\u017cliwych. Zwyk\u0142e logowanie mo\u017ce nadal obs\u0142ugiwa\u0107 has\u0142o i weryfikacj\u0119 dwuetapow\u0105, zale\u017cnie od zasad konta.<\/p><h3>Jak ustali\u0107 konto udzielaj\u0105ce autoryzacji?<\/h3><p>Po\u0142\u0105czenia aplikacji na koncie oraz dost\u0119pne dzienniki OAuth Workspace z odpowiednimi uprawnieniami pomagaj\u0105 powi\u0105za\u0107 konta z aplikacjami OAuth. Zdarzenia zmian Ads mog\u0105 pokazywa\u0107 konto i typ klienta dla obs\u0142ugiwanych zmian, ale nie stanowi\u0105 pe\u0142nego spisu autoryzacji. Zapytania API o te zdarzenia obejmuj\u0105 ostatnie 30 dni i wymagaj\u0105 limitu najwy\u017cej 10 000 wierszy. Odczyty raportowe nie tworz\u0105 zdarze\u0144 zmian. Te \u017ar\u00f3d\u0142a wymagaj\u0105 por\u00f3wnania z rzeczywistym wdro\u017ceniem.<\/p><\/div><div class=\"lw-quellen\"><h2>\u0179r\u00f3d\u0142a<\/h2><ul><li><a href=\"https:\/\/ads-developers.googleblog.com\/2026\/07\/passkey-authentication-requirement-for.html\">Google: Passkey authentication requirement<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/oauth\/security-requirements\">Google Ads API: Security requirements<\/a><\/li><li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/16917887\">Google Ads: Passkeys for sensitive actions<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/oauth\/service-accounts\">Google Ads API: Service account workflow<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/identity\/protocols\/oauth2#expiration\">Google OAuth: Refresh token expiration<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/change-event\">Google Ads API: Change events<\/a><\/li><li><a href=\"https:\/\/support.google.com\/a\/answer\/11482175\">Google Workspace: Investigation data sources<\/a><\/li><\/ul><\/div>","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":15124,"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>Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Google Ads API i passkeys: rozpoznanie obj\u0119tych kont, inwentaryzacja autoryzacji OAuth i wyszukiwanie zapomnianych dost\u0119p\u00f3w.\" \/>\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\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Google Ads API i passkeys: rozpoznanie obj\u0119tych kont, inwentaryzacja autoryzacji OAuth i wyszukiwanie zapomnianych dost\u0119p\u00f3w.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/\" \/>\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=\"article:modified_time\" content=\"2026-10-24T00:32:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png\" \/>\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\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\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\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje\",\"datePublished\":\"2026-08-11T16:45:00+00:00\",\"dateModified\":\"2026-10-24T00:32:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/\"},\"wordCount\":1027,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png\",\"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\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/\",\"name\":\"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png\",\"datePublished\":\"2026-08-11T16:45:00+00:00\",\"dateModified\":\"2026-10-24T00:32:30+00:00\",\"description\":\"Google Ads API i passkeys: rozpoznanie obj\u0119tych kont, inwentaryzacja autoryzacji OAuth i wyszukiwanie zapomnianych dost\u0119p\u00f3w.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png\",\"width\":1200,\"height\":630,\"caption\":\"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje\"}]},{\"@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\":\"Lukas Wojcik\",\"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\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje | Lukas Wojcik","description":"Google Ads API i passkeys: rozpoznanie obj\u0119tych kont, inwentaryzacja autoryzacji OAuth i wyszukiwanie zapomnianych dost\u0119p\u00f3w.","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\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/","og_locale":"en_US","og_type":"article","og_title":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje | Lukas Wojcik","og_description":"Google Ads API i passkeys: rozpoznanie obj\u0119tych kont, inwentaryzacja autoryzacji OAuth i wyszukiwanie zapomnianych dost\u0119p\u00f3w.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-11T16:45:00+00:00","article_modified_time":"2026-10-24T00:32:30+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje","datePublished":"2026-08-11T16:45:00+00:00","dateModified":"2026-10-24T00:32:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/"},"wordCount":1027,"commentCount":1,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png","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\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/","name":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png","datePublished":"2026-08-11T16:45:00+00:00","dateModified":"2026-10-24T00:32:30+00:00","description":"Google Ads API i passkeys: rozpoznanie obj\u0119tych kont, inwentaryzacja autoryzacji OAuth i wyszukiwanie zapomnianych dost\u0119p\u00f3w.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9366-google-ads-api-passkeys-klient-oauth-n.png","width":1200,"height":630,"caption":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/wymog-passkey-w-google-ads-api-czego-dotyczy-i-jak-znalezc-zapomniane\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Wym\u00f3g passkey w Google Ads API: czego dotyczy i jak znale\u017a\u0107 zapomniane autoryzacje"}]},{"@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":"Lukas Wojcik","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":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_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":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9366\/revisions"}],"predecessor-version":[{"id":23204,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9366\/revisions\/23204"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/15124"}],"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}]}}