<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[טוקן של גוגל לא מתרענן אוטומטית בPHP]]></title><description><![CDATA[<p dir="rtl">יש לי קוד בשפת PHP שאמור לסמן כנקרא+תווית כלשהוא מיילים עם id שאני שולח לפונקצייה<br />
לצורך כך צריך ליצור לקוח בקלאוד ואח"כ ליצור טוקן<br />
אך משום מה הטוקן מחזיק מעמד רק כמה ימים ואז אני צריך להיכנס ולאמת מחדש במקום שזה יתרענן אוטומטית<br />
ניסיתי לבקש עזרה מGPT אבל הוא רק סיבך אותי...<br />
אשמח מאוד אם תוכלו לעזור לי<br />
זה הקוד שיש לי כרגע</p>
<pre><code>&lt;?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', '/var/www/unread_mail.log');

require __DIR__ . '/vendor/autoload.php';
use Google\Client;
use Google\Service\Gmail;
use Google\Service\Gmail\ModifyMessageRequest;
function unread_mail($id, $status)
{
    $credentialsPath = '/var/www/client_unread_gmail.json'; // קובץ האישורים 
    $tokenPath = '/var/www/token_unread_gmail.json'; // קובץ הטוקן

    $client = new Client();
    $client-&gt;setApplicationName('Gmail API PHP Quickstart');
    $client-&gt;setScopes(Gmail::GMAIL_MODIFY);
    $client-&gt;setAuthConfig($credentialsPath);
    $client-&gt;setAccessType('offline');
    $client-&gt;setPrompt('select_account'); // כדי לא לבקש אישור כל פעם מחדש

    // אם יש token שמור, טען אותו
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client-&gt;setAccessToken($accessToken);
    }

    // אם אין token או שהוא לא בתוקף, יש לחדש אותו
    if ($client-&gt;isAccessTokenExpired()) {
        // אם הטוקן פג תוקף, נסה לרענן אותו
        if ($client-&gt;getRefreshToken()) {
            try {
                $newAccessToken = $client-&gt;fetchAccessTokenWithRefreshToken($client-&gt;getRefreshToken());
                $client-&gt;setAccessToken($newAccessToken);
                file_put_contents($tokenPath, json_encode($client-&gt;getAccessToken()));
            } catch (Exception $e) {
                // אם רענון הטוקן נכשל, צריך לעשות אימות מחדש
                $authUrl = $client-&gt;createAuthUrl();
                printf("פתח את הקישור הבא בדפדפן שלך כדי לאמת:\n%s\n", $authUrl);
                print 'הזן את הקוד שקיבלת: ';
                $authCode = trim(fgets(STDIN));
                
                $accessToken = $client-&gt;fetchAccessTokenWithAuthCode($authCode);
                $client-&gt;setAccessToken($accessToken);
                file_put_contents($tokenPath, json_encode($accessToken));
            }
        } else {
            // אם אין refresh_token, יש צורך באימות מחדש
            $authUrl = $client-&gt;createAuthUrl();
            printf("פתח את הקישור הבא בדפדפן שלך כדי לאמת:\n%s\n", $authUrl);
            print 'הזן את הקוד שקיבלת: ';
            $authCode = trim(fgets(STDIN));
            
            $accessToken = $client-&gt;fetchAccessTokenWithAuthCode($authCode);
            $client-&gt;setAccessToken($accessToken);
            file_put_contents($tokenPath, json_encode($accessToken));
        }
    }

    $service = new Gmail($client);

    $labels = $service-&gt;users_labels-&gt;listUsersLabels('me');
    $update_id = null;

    foreach ($labels-&gt;getLabels() as $label) {
        if ($label-&gt;getName() === $status) {
            $update_id = $label-&gt;getId();
            break;
        }
    }

    if (!$update_id) {
        $newLabel = new Google\Service\Gmail\Label([
            'name' =&gt; $status,
            'labelListVisibility' =&gt; 'labelShow',
            'messageListVisibility' =&gt; 'show'
        ]);
        $createdLabel = $service-&gt;users_labels-&gt;create('me', $newLabel);
        $update_id = $createdLabel-&gt;getId();
    }

    $messageId = $id;
    $modifyRequest = new ModifyMessageRequest([
        'addLabelIds' =&gt; [$update_id],
        'removeLabelIds' =&gt; ['UNREAD', 'INBOX']
    ]);

    try {
        $service-&gt;users_messages-&gt;modify('me', $messageId, $modifyRequest);
        return "ok";
    } catch (Exception $e) {
        return 'שגיאה: ' . $e-&gt;getMessage();
    }
}
</code></pre>
<p dir="rtl">תודה רבה מראש!</p>
]]></description><link>https://tchumim.com/topic/16983/טוקן-של-גוגל-לא-מתרענן-אוטומטית-בphp</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 00:15:26 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/16983.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Apr 2025 09:06:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 17:21:37 GMT]]></title><description><![CDATA[<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%A9%D7%A9%D7%90" aria-label="Profile: ששא">@<bdi>ששא</bdi></a><br />
זה לא מתפרסם בשום מקום. רק תזהר לא לשתף את הטוקנים שלך.</p>
<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%A9%D7%A9%D7%90" aria-label="Profile: ששא">@<bdi>ששא</bdi></a> כתב ב<a href="/post/166925">טוקן של גוגל לא מתרענן אוטומטית בPHP</a>:</p>
<blockquote>
<p dir="rtl">הם דורשים המון דברים(למשל דף בית, מדיניות פרטיות, סרטון הדגמה) שאין לי</p>
</blockquote>
<p dir="rtl">הם מבקשים, למיטב ידיעתי בפעם האחרונה שעשיתי זה לא היה חובה.<br />
יש לי פרוייקטים שרצים בלי זה.<br />
זה רק יכתוב שהאפליקציה לא אומתה וכו'.</p>
]]></description><link>https://tchumim.com/post/166926</link><guid isPermaLink="true">https://tchumim.com/post/166926</guid><dc:creator><![CDATA[יאנג בוי]]></dc:creator><pubDate>Mon, 21 Apr 2025 17:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 16:43:23 GMT]]></title><description><![CDATA[<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%99%D7%90%D7%A0%D7%92-%D7%91%D7%95%D7%99" aria-label="Profile: יאנג-בוי">@<bdi>יאנג-בוי</bdi></a> זה אכן לא מפורסם עדיין<br />
מה בעצם כולל הפרסום? זה אכן מפורסם איפשהוא? או מה?</p>
<p dir="rtl"><strong>עריכה:</strong> הם דורשים המון דברים(למשל דף בית, מדיניות פרטיות, סרטון הדגמה) שאין לי בדיוק כי זה לא באמת אפליקצייה או אתר אלא רק קוד שרץ ברקע<br />
אין דרך אחרת?</p>
]]></description><link>https://tchumim.com/post/166925</link><guid isPermaLink="true">https://tchumim.com/post/166925</guid><dc:creator><![CDATA[ששא]]></dc:creator><pubDate>Mon, 21 Apr 2025 16:43:23 GMT</pubDate></item><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 16:23:50 GMT]]></title><description><![CDATA[<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%99%D7%90%D7%A0%D7%92-%D7%91%D7%95%D7%99" aria-label="Profile: יאנג-בוי">@<bdi>יאנג-בוי</bdi></a> כתב ב<a href="/post/166921">טוקן של גוגל לא מתרענן אוטומטית בPHP</a>:</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dovid" aria-label="Profile: dovid">@<bdi>dovid</bdi></a> במחילה מכבודכם, אבל נראה לי שהוא כתב בדיוק מה הבעיה שלו... הקוד עובד, ורק הטוקן מתאפס משום מה.</p>
</blockquote>
<p dir="rtl">לא האשמתי אותו בלא לכתוב ברור, טענתי שבשביל לדבאג קוד מישהו צריך להריץ ולבחון אותו וזה אמור להיות מי שבכל מקרה מריץ אותו.<br />
יש קוד נהדר, עם בקרת זרימה ופלט, ואין לי מושג מה התרחש בפועל.<br />
למשל, האימות מחדש קורה בשני אפשרויות, או אם getRefreshToken מחזיר ריק או אם יש שגיאה (catch), ואין לי מושג איזה שלב קרה.</p>
]]></description><link>https://tchumim.com/post/166924</link><guid isPermaLink="true">https://tchumim.com/post/166924</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 21 Apr 2025 16:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 15:50:45 GMT]]></title><description><![CDATA[<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%A9%D7%A9%D7%90" aria-label="Profile: ששא">@<bdi>ששא</bdi></a><br />
זה אמור להראות ככה:<br />
<img src="/assets/uploads/files/1745250580587-f38c7d5b-8447-4498-ad14-4f4723cafd55-image.png" alt="f38c7d5b-8447-4498-ad14-4f4723cafd55-image.png" class=" img-fluid img-markdown" /><br />
אם במקום Back to testing יש לך Publish, תלחץ עליו.</p>
<p dir="rtl">בהצלחה!</p>
]]></description><link>https://tchumim.com/post/166923</link><guid isPermaLink="true">https://tchumim.com/post/166923</guid><dc:creator><![CDATA[יאנג בוי]]></dc:creator><pubDate>Mon, 21 Apr 2025 15:50:45 GMT</pubDate></item><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 15:40:15 GMT]]></title><description><![CDATA[<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%99%D7%90%D7%A0%D7%92-%D7%91%D7%95%D7%99" aria-label="Profile: יאנג-בוי">@<bdi>יאנג-בוי</bdi></a> כתב ב<a href="/post/166921">טוקן של גוגל לא מתרענן אוטומטית בPHP</a>:</p>
<blockquote>
<p dir="rtl">פבלשת את החיבור בקלאוד?</p>
</blockquote>
<p dir="rtl">אני לא מבין את המילה...<br />
יצרתי מזהה לקוח<br />
מה עוד?</p>
]]></description><link>https://tchumim.com/post/166922</link><guid isPermaLink="true">https://tchumim.com/post/166922</guid><dc:creator><![CDATA[ששא]]></dc:creator><pubDate>Mon, 21 Apr 2025 15:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 15:38:58 GMT]]></title><description><![CDATA[<p dir="rtl"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%A9%D7%A9%D7%90" aria-label="Profile: ששא">@<bdi>ששא</bdi></a><br />
פבלשת את החיבור בקלאוד?<br />
אם לא מפבלשים זה אמור להתאפס בתכיפות.</p>
<hr />
<p dir="rtl">שים לב שהמייל גלוי בקוד, שקול לערוך את ההודעה.</p>
<hr />
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dovid" aria-label="Profile: dovid">@<bdi>dovid</bdi></a> במחילה מכבודכם, אבל נראה לי שהוא כתב בדיוק מה הבעיה שלו... הקוד עובד, ורק הטוקן מתאפס משום מה.</p>
]]></description><link>https://tchumim.com/post/166921</link><guid isPermaLink="true">https://tchumim.com/post/166921</guid><dc:creator><![CDATA[יאנג בוי]]></dc:creator><pubDate>Mon, 21 Apr 2025 15:38:58 GMT</pubDate></item><item><title><![CDATA[Reply to טוקן של גוגל לא מתרענן אוטומטית בPHP on Mon, 21 Apr 2025 10:48:02 GMT]]></title><description><![CDATA[<p dir="rtl">זה יותר עזרה הGPT אנושי מאשר שאלה בפורום...<br />
כשיש קוד שלא עובד כמצופה, אז דבר ראשון מתחקים אחרי מה הוא עושה, לאיזה תנאי הוא נכנס ולאיזה לא, איפה הוא עוצר ושמים את האצבע יחסית על המקום שלא פועל כצפוי.</p>
]]></description><link>https://tchumim.com/post/166919</link><guid isPermaLink="true">https://tchumim.com/post/166919</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 21 Apr 2025 10:48:02 GMT</pubDate></item></channel></rss>