{"id":2309,"date":"2020-05-08T15:57:54","date_gmt":"2020-05-08T12:57:54","guid":{"rendered":"http:\/\/fatihsoysal.com\/blog\/?p=2309"},"modified":"2020-05-08T15:57:54","modified_gmt":"2020-05-08T12:57:54","slug":"google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/","title":{"rendered":"Google Authentication (GA) PHP Entegrasyon &#8211; Giri\u015f &#038; Kay\u0131t \u00d6rnek Uygulama"},"content":{"rendered":"<p>Merhaba, Bildi\u011finiz \u00fczere Google, bir tek seferlik giri\u015f token sistemi olu\u015fturmak i\u00e7in 2011 y\u0131l\u0131nda GA i\u00e7in iki fakt\u00f6rl\u00fc kimlik do\u011frulama arac\u0131n\u0131 yay\u0131nlad\u0131. Web uygulaman\u0131za iki fakt\u00f6rl\u00fc kimlik do\u011frulama (2FA) kullanmak, kullan\u0131c\u0131 verilerinizin g\u00fcvenli\u011fini art\u0131r\u0131r. Giri\u015f yapt\u0131ktan veya kay\u0131t olduktan sonra olu\u015fturulan QRCode&#8217;u taramak i\u00e7in &#8220;Authenticator&#8221; uygulamas\u0131n\u0131 indirmek i\u00e7in bir ak\u0131ll\u0131 telefona ihtiyac\u0131n\u0131z var. (Bunu yapan chrome eklentileri de mevcut, ancak ben hi\u00e7 kullanmad\u0131m.)<\/p>\n<p>Ge\u00e7ti\u011fimiz g\u00fcnlerde bir proje i\u00e7in GA entegrasyonu yapma ihtiyac\u0131m oldu, bunu biraz geli\u015ftirip repoya y\u00fckledim, makalenin devam\u0131nda bir \u00f6rnek proje ve kod betikleri bulacaks\u0131n\u0131z.<\/p>\n<p><strong>Google Authentication nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/strong><br \/>\nGoogle Authentication hem Android hem de IOS ak\u0131ll\u0131 telefon i\u00e7in \u00fccretsiz bir uygulamad\u0131r. Kimlik do\u011frulay\u0131c\u0131 her 30 saniyede bir yeni bir kod olu\u015fturur. \u0130\u015flem a\u015fa\u011f\u0131daki gibidir:<\/p>\n<p><strong>1. Php uygulaman\u0131z, kullan\u0131c\u0131n\u0131n Google Authenticator uygulamas\u0131na profil eklemek i\u00e7in telefon kameras\u0131yla tarad\u0131\u011f\u0131 bir QR kodu olu\u015fturur.<\/strong><br \/>\n<strong>2. Daha sonra Authenticator uygulamas\u0131, php uygulamas\u0131nda kimlik do\u011frulaman\u0131n ikinci k\u0131sm\u0131 i\u00e7in kullan\u0131lacak her 30 saniyede bir yeni bir kod olu\u015fturur.<\/strong><\/p>\n<p>Asl\u0131nda yap\u0131lan sms \u015fifre entegrasyonu ile ayn\u0131d\u0131r. Sadece \u015fifre size sms olarak gelmez, uygulama i\u00e7inden al\u0131n\u0131r. Bu \u015fifreler 30 saniyede bir yenilenir.<\/p>\n<p>Bunu bir \u00f6rnek \u00fczerinden g\u00f6stermek daha efektif olacak. \u0130lk \u00f6nce bir kay\u0131t formu ve bir giri\u015f formu olu\u015fturaca\u011f\u0131z. Kullan\u0131c\u0131 sisteme kaydolduktan sonra QRCode&#8217;u olu\u015fturaca\u011f\u0131z ve Google \u015eifrematik Uygulamas\u0131 ile do\u011frulayaca\u011f\u0131z.<img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-2310\" src=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2.png\" alt=\"\" width=\"675\" height=\"354\" srcset=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2.png 675w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2-300x157.png 300w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2-500x262.png 500w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2-400x210.png 400w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2-200x105.png 200w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_2-50x26.png 50w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-2311\" src=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3.png\" alt=\"\" width=\"675\" height=\"443\" srcset=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3.png 675w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3-300x197.png 300w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3-500x328.png 500w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3-400x263.png 400w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3-200x131.png 200w, https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/google_auth_3-50x33.png 50w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/><\/p>\n<p>Google api \u00fczerinden ba\u011flant\u0131 sa\u011flayan ve \u015fifreleme mekanizmas\u0131n\u0131 olu\u015fturan class a\u015fa\u011f\u0131daki gibidir.<\/p>\n<pre class=\"lang:default decode:true \">&lt;?php\r\n\r\nclass GoogleAuthenticator\r\n{\r\n    protected $_codeLength = 6;\r\n\r\n    \/**\r\n     * Create new secret.\r\n     * 16 characters, randomly chosen from the allowed base32 characters.\r\n     *\r\n     * @param int $secretLength\r\n     * @return string\r\n     *\/\r\n    public function createSecret($secretLength = 16)\r\n    {\r\n        $validChars = $this-&gt;_getBase32LookupTable();\r\n        unset($validChars[32]);\r\n\r\n        $secret = '';\r\n        for ($i = 0; $i &lt; $secretLength; $i++) {\r\n            $secret .= $validChars[array_rand($validChars)];\r\n        }\r\n        return $secret;\r\n    }\r\n\r\n    \/**\r\n     * Calculate the code, with given secret and point in time\r\n     *\r\n     * @param string $secret\r\n     * @param int|null $timeSlice\r\n     * @return string\r\n     *\/\r\n    public function getCode($secret, $timeSlice = null)\r\n    {\r\n        if ($timeSlice === null) {\r\n            $timeSlice = floor(time() \/ 30);\r\n        }\r\n\r\n        $secretkey = $this-&gt;_base32Decode($secret);\r\n\r\n        \/\/ Pack time into binary string\r\n        $time = chr(0).chr(0).chr(0).chr(0).pack('N*', $timeSlice);\r\n        \/\/ Hash it with users secret key\r\n        $hm = hash_hmac('SHA1', $time, $secretkey, true);\r\n        \/\/ Use last nipple of result as index\/offset\r\n        $offset = ord(substr($hm, -1)) &amp; 0x0F;\r\n        \/\/ grab 4 bytes of the result\r\n        $hashpart = substr($hm, $offset, 4);\r\n\r\n        \/\/ Unpak binary value\r\n        $value = unpack('N', $hashpart);\r\n        $value = $value[1];\r\n        \/\/ Only 32 bits\r\n        $value = $value &amp; 0x7FFFFFFF;\r\n\r\n        $modulo = pow(10, $this-&gt;_codeLength);\r\n        return str_pad($value % $modulo, $this-&gt;_codeLength, '0', STR_PAD_LEFT);\r\n    }\r\n\r\n    \/**\r\n     * Get QR-Code URL for image, from google charts\r\n     *\r\n     * @param string $name\r\n     * @param string $secret\r\n     * @param string $title\r\n     * @return string\r\n     *\/\r\n    public function getQRCodeGoogleUrl($name, $secret, $title = null) {\r\n        $urlencoded = urlencode('otpauth:\/\/totp\/'.$name.'?secret='.$secret.'');\r\n\tif(isset($title)) {\r\n                $urlencoded .= urlencode('&amp;issuer='.urlencode($title));\r\n        }\r\n        return 'https:\/\/chart.googleapis.com\/chart?chs=200x200&amp;chld=M|0&amp;cht=qr&amp;chl='.$urlencoded.'';\r\n    }\r\n\r\n    \/**\r\n     * Check if the code is correct. This will accept codes starting from $discrepancy*30sec ago to $discrepancy*30sec from now\r\n     *\r\n     * @param string $secret\r\n     * @param string $code\r\n     * @param int $discrepancy This is the allowed time drift in 30 second units (8 means 4 minutes before or after)\r\n     * @param int|null $currentTimeSlice time slice if we want use other that time()\r\n     * @return bool\r\n     *\/\r\n    public function verifyCode($secret, $code, $discrepancy = 1, $currentTimeSlice = null)\r\n    {\r\n        if ($currentTimeSlice === null) {\r\n            $currentTimeSlice = floor(time() \/ 30);\r\n        }\r\n\r\n        for ($i = -$discrepancy; $i &lt;= $discrepancy; $i++) {\r\n            $calculatedCode = $this-&gt;getCode($secret, $currentTimeSlice + $i);\r\n            if ($calculatedCode == $code ) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    \/**\r\n     * Set the code length, should be &gt;=6\r\n     *\r\n     * @param int $length\r\n     * @return GoogleAuthenticator\r\n     *\/\r\n    public function setCodeLength($length)\r\n    {\r\n        $this-&gt;_codeLength = $length;\r\n        return $this;\r\n    }\r\n\r\n    \/**\r\n     * Helper class to decode base32\r\n     *\r\n     * @param $secret\r\n     * @return bool|string\r\n     *\/\r\n    protected function _base32Decode($secret)\r\n    {\r\n        if (empty($secret)) return '';\r\n\r\n        $base32chars = $this-&gt;_getBase32LookupTable();\r\n        $base32charsFlipped = array_flip($base32chars);\r\n\r\n        $paddingCharCount = substr_count($secret, $base32chars[32]);\r\n        $allowedValues = array(6, 4, 3, 1, 0);\r\n        if (!in_array($paddingCharCount, $allowedValues)) return false;\r\n        for ($i = 0; $i &lt; 4; $i++){\r\n            if ($paddingCharCount == $allowedValues[$i] &amp;&amp;\r\n                substr($secret, -($allowedValues[$i])) != str_repeat($base32chars[32], $allowedValues[$i])) return false;\r\n        }\r\n        $secret = str_replace('=','', $secret);\r\n        $secret = str_split($secret);\r\n        $binaryString = \"\";\r\n        for ($i = 0; $i &lt; count($secret); $i = $i+8) {\r\n            $x = \"\";\r\n            if (!in_array($secret[$i], $base32chars)) return false;\r\n            for ($j = 0; $j &lt; 8; $j++) {\r\n                $x .= str_pad(base_convert(@$base32charsFlipped[@$secret[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);\r\n            }\r\n            $eightBits = str_split($x, 8);\r\n            for ($z = 0; $z &lt; count($eightBits); $z++) {\r\n                $binaryString .= ( ($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48 ) ? $y:\"\";\r\n            }\r\n        }\r\n        return $binaryString;\r\n    }\r\n\r\n    \/**\r\n     * Helper class to encode base32\r\n     *\r\n     * @param string $secret\r\n     * @param bool $padding\r\n     * @return string\r\n     *\/\r\n    protected function _base32Encode($secret, $padding = true)\r\n    {\r\n        if (empty($secret)) return '';\r\n\r\n        $base32chars = $this-&gt;_getBase32LookupTable();\r\n\r\n        $secret = str_split($secret);\r\n        $binaryString = \"\";\r\n        for ($i = 0; $i &lt; count($secret); $i++) {\r\n            $binaryString .= str_pad(base_convert(ord($secret[$i]), 10, 2), 8, '0', STR_PAD_LEFT);\r\n        }\r\n        $fiveBitBinaryArray = str_split($binaryString, 5);\r\n        $base32 = \"\";\r\n        $i = 0;\r\n        while ($i &lt; count($fiveBitBinaryArray)) {\r\n            $base32 .= $base32chars[base_convert(str_pad($fiveBitBinaryArray[$i], 5, '0'), 2, 10)];\r\n            $i++;\r\n        }\r\n        if ($padding &amp;&amp; ($x = strlen($binaryString) % 40) != 0) {\r\n            if ($x == 8) $base32 .= str_repeat($base32chars[32], 6);\r\n            elseif ($x == 16) $base32 .= str_repeat($base32chars[32], 4);\r\n            elseif ($x == 24) $base32 .= str_repeat($base32chars[32], 3);\r\n            elseif ($x == 32) $base32 .= $base32chars[32];\r\n        }\r\n        return $base32;\r\n    }\r\n\r\n    \/**\r\n     * Get array with all 32 characters for decoding from\/encoding to base32\r\n     *\r\n     * @return array\r\n     *\/\r\n    protected function _getBase32LookupTable()\r\n    {\r\n        return array(\r\n            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', \/\/  7\r\n            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', \/\/ 15\r\n            'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', \/\/ 23\r\n            'Y', 'Z', '2', '3', '4', '5', '6', '7', \/\/ 31\r\n            '='  \/\/ padding char\r\n        );\r\n    }\r\n}\r\n<\/pre>\n<p>B\u00fcnyesinde kay\u0131t ol, giri\u015f yap, GA onay ve profil sayfas\u0131 bar\u0131nd\u0131ran \u00f6rnek projenin linkini a\u015fa\u011f\u0131da payla\u015f\u0131yorum. Diledi\u011finiz gibi geli\u015ftirebilirsiniz.<\/p>\n<p><a href=\"https:\/\/github.com\/maxmanus16\/GA-Authentication-PHP\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/maxmanus16\/GA-Authentication-PHP<\/a><\/p>\n<p><strong>Dikkat<\/strong>: DB.SQL dosyas\u0131n\u0131 veritaban\u0131na i\u00e7e aktar\u0131p, connection.php dosyas\u0131ndaki veritaban\u0131 bilgilerinizi g\u00fcncellemeniz test uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rabilmeniz i\u00e7in yeterlidir.<\/p>\n","protected":false},"excerpt":{"rendered":"Merhaba, Bildi\u011finiz \u00fczere Google, bir tek seferlik giri\u015f token sistemi olu\u015fturmak i\u00e7in 2011 y\u0131l\u0131nda GA i\u00e7in iki fakt\u00f6rl\u00fc&hellip;","protected":false},"author":1,"featured_media":2312,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[133],"tags":[747,748,749,750,751],"class_list":{"0":"post-2309","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-php","8":"tag-google-authentication-ga-php-entegrasyon","9":"tag-php-ga","10":"tag-php-ga-entegrasyon","11":"tag-php-ga-ornek-uygulama","12":"tag-php-google-authentication","13":"cs-entry","14":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Google Authentication (GA) PHP Entegrasyon - Giri\u015f &amp; Kay\u0131t \u00d6rnek Uygulama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/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:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google Authentication (GA) PHP Entegrasyon - Giri\u015f &amp; Kay\u0131t \u00d6rnek Uygulama\" \/>\n<meta property=\"og:description\" content=\"Merhaba, Bildi\u011finiz \u00fczere Google, bir tek seferlik giri\u015f token sistemi olu\u015fturmak i\u00e7in 2011 y\u0131l\u0131nda GA i\u00e7in iki fakt\u00f6rl\u00fc&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-08T12:57:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png\" \/>\n\t<meta property=\"og:image:width\" content=\"780\" \/>\n\t<meta property=\"og:image:height\" content=\"408\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Google Authentication (GA) PHP Entegrasyon &#8211; Giri\u015f &#038; Kay\u0131t \u00d6rnek Uygulama\",\"datePublished\":\"2020-05-08T12:57:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\"},\"wordCount\":370,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png\",\"keywords\":[\"Google Authentication (GA) PHP Entegrasyon\",\"php ga\",\"php ga entegrasyon\",\"php ga \u00f6rnek uygulama\",\"php google authentication\"],\"articleSection\":[\"PHP\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#respond\"]}],\"copyrightYear\":\"2020\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\",\"name\":\"Google Authentication (GA) PHP Entegrasyon - Giri\u015f & Kay\u0131t \u00d6rnek Uygulama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png\",\"datePublished\":\"2020-05-08T12:57:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png\",\"width\":780,\"height\":408},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Authentication (GA) PHP Entegrasyon &#8211; Giri\u015f &#038; Kay\u0131t \u00d6rnek Uygulama\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Google Authentication (GA) PHP Entegrasyon - Giri\u015f & Kay\u0131t \u00d6rnek Uygulama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/","og_locale":"tr_TR","og_type":"article","og_title":"Google Authentication (GA) PHP Entegrasyon - Giri\u015f & Kay\u0131t \u00d6rnek Uygulama","og_description":"Merhaba, Bildi\u011finiz \u00fczere Google, bir tek seferlik giri\u015f token sistemi olu\u015fturmak i\u00e7in 2011 y\u0131l\u0131nda GA i\u00e7in iki fakt\u00f6rl\u00fc&hellip;","og_url":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2020-05-08T12:57:54+00:00","og_image":[{"width":780,"height":408,"url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png","type":"image\/png"}],"author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Google Authentication (GA) PHP Entegrasyon &#8211; Giri\u015f &#038; Kay\u0131t \u00d6rnek Uygulama","datePublished":"2020-05-08T12:57:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/"},"wordCount":370,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png","keywords":["Google Authentication (GA) PHP Entegrasyon","php ga","php ga entegrasyon","php ga \u00f6rnek uygulama","php google authentication"],"articleSection":["PHP"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#respond"]}],"copyrightYear":"2020","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/","url":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/","name":"Google Authentication (GA) PHP Entegrasyon - Giri\u015f & Kay\u0131t \u00d6rnek Uygulama - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage"},"image":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png","datePublished":"2020-05-08T12:57:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#primaryimage","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2020\/05\/8c0c92dcd7a1aa0e23029bdc0339f2dafc7ebf3a.png","width":780,"height":408},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/google-authentication-ga-php-entegrasyon-giris-kayit-ornek-uygulama\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Google Authentication (GA) PHP Entegrasyon &#8211; Giri\u015f &#038; Kay\u0131t \u00d6rnek Uygulama"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/2309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=2309"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/2309\/revisions"}],"predecessor-version":[{"id":2313,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/2309\/revisions\/2313"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media\/2312"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=2309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=2309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=2309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}