דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בעיית התחברות ל-API של המייל באמצעות PHP

בעיית התחברות ל-API של המייל באמצעות PHP

מתוזמן נעוץ נעול הועבר תכנות
7 פוסטים 3 כותבים 232 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • איש נחמדא מנותק
    איש נחמדא מנותק
    איש נחמד
    כתב ב נערך לאחרונה על ידי איש נחמד
    #1

    אני מנסה להתחבר ל-API של GMAIL באמצעות הספרייה, אבל מקבל שגיאה

    הקוד שלי:

    <?php
    
    use Google\Client;
    use Google\Service\Gmail;
    
    require __DIR__ . '/vendor/autoload.php';
    
    $client = new Google_Client();
    $client->setAuthConfig(__DIR__.'/email-api.json');
    $client->setScopes(['https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/gmail.labels']);
    
    $service = new Gmail($client);
    
    try {
        $labels = $service->users_labels->listUsersLabels('me');
    } catch (Google\Service\Exception $e) {
        $error = json_decode($e->getMessage(), true);
        print_r($error);
    }
    

    התוצאה:

    Array
    (
        [error] => Array
            (
                [code] => 400
                [message] => Precondition check failed.
                [errors] => Array
                    (
                        [0] => Array
                            (
                                [message] => Precondition check failed.
                                [domain] => global
                                [reason] => failedPrecondition
                            )
    
                    )
    
                [status] => FAILED_PRECONDITION
            )
    
    )
    
    

    איפה הטעות?

    להיות איש נחמד זה מחייב...

    A0533057932A צדיק תמיםצ 2 תגובות תגובה אחרונה
    0
    • A0533057932A מנותק
      A0533057932A מנותק
      A0533057932
      השיב לאיש נחמד ב נערך לאחרונה על ידי
      #2

      @איש-נחמד רק לוודאות
      הפעלת אימות דו שלבי + סיסמה לאפליקציה
      ודרך הסיסמה לאפליקציה אתה ניגש
      נכון?

      איש נחמדא צדיק תמיםצ 2 תגובות תגובה אחרונה
      0
      • איש נחמדא מנותק
        איש נחמדא מנותק
        איש נחמד
        השיב לA0533057932 ב נערך לאחרונה על ידי
        #3

        @A0533057932 כתב בבעיית התחברות ל-API של המייל באמצעות PHP:

        @איש-נחמד רק לוודאות
        הפעלת אימות דו שלבי + סיסמה לאפליקציה
        ודרך הסיסמה לאפליקציה אתה ניגש
        נכון?

        הקוד אמור לפעול דרך מרכזיית אסטריסק, ולא באמצעות גלישה בפועל

        האם עלי להפעיל אימות דו שלבי למייל כדי לאפשר התחברות מסוג זה?

        להיות איש נחמד זה מחייב...

        תגובה 1 תגובה אחרונה
        0
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          השיב לA0533057932 ב נערך לאחרונה על ידי
          #4

          @A0533057932 כתב בבעיית התחברות ל-API של המייל באמצעות PHP:

          @איש-נחמד רק לוודאות
          הפעלת אימות דו שלבי + סיסמה לאפליקציה
          ודרך הסיסמה לאפליקציה אתה ניגש
          נכון?

          זה לא SMTP, זה Gmail API, כך שזה לא רלוונטי

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          תגובה 1 תגובה אחרונה
          1
          • צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            השיב לאיש נחמד ב נערך לאחרונה על ידי צדיק תמים
            #5

            @איש-נחמד כתב בבעיית התחברות ל-API של המייל באמצעות PHP:

            איפה הטעות?

            מהו קובץ הJSON? של חשבון שירות?
            כדי לגשת לAPI של שירותי גוגל שמספקים מידע משתמש פרטי, לדוגמה Gmail או Calendar, אי אפשר להשתמש בחשבון שירות, צריך להשתמש בAuth0 עם הרשאה של המשתמש במסך הרשאה (אלא אם כן מדובר בGoogle Worspace (דומיין), שאז אפשר להגדיר delegation).

            ראה גם: https://www.googlecloudcommunity.com/gc/Workspace-Q-A/Seeing-400-error-while-trying-to-send-a-mail/m-p/536255

            Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
            טיפים

            איש נחמדא תגובה 1 תגובה אחרונה
            1
            • איש נחמדא מנותק
              איש נחמדא מנותק
              איש נחמד
              השיב לצדיק תמים ב נערך לאחרונה על ידי
              #6

              @צדיק-תמים כתב בבעיית התחברות ל-API של המייל באמצעות PHP:

              @איש-נחמד כתב בבעיית התחברות ל-API של המייל באמצעות PHP:

              איפה הטעות?

              מהו קובץ הJSON? של חשבון שירות?
              כדי לגשת לAPI של שירותי גוגל שמספקים מידע משתמש פרטי, לדוגמה Gmail או Calendar, אי אפשר להשתמש בחשבון שירות, צריך להשתמש בAuth0 עם הרשאה של המשתמש במסך הרשאה (אלא אם כן מדובר בGoogle Worspace (דומיין), שאז אפשר להגדיר delegation).

              ראה גם: https://www.googlecloudcommunity.com/gc/Workspace-Q-A/Seeing-400-error-while-trying-to-send-a-mail/m-p/536255

              כאמור, אני צריך את זה בתוך מרכזיית אסטריסק, כך שאין לי אפשרות לפתוח את מסך האימות
              האם אני יכול לעקוף את ההגבלה הזו באמצעות התחברות ל-google script שמחובר לחשבון?

              להיות איש נחמד זה מחייב...

              צדיק תמיםצ תגובה 1 תגובה אחרונה
              0
              • צדיק תמיםצ מנותק
                צדיק תמיםצ מנותק
                צדיק תמים
                השיב לאיש נחמד ב נערך לאחרונה על ידי
                #7

                @איש-נחמד אפשר להדפיס לטרמינל את הלינק למסך האימות או סתם להריץ לוקאלית ואז להעלות לשרת, אם מעניין אותך אשתדל לפרט יותר.

                @איש-נחמד כתב בבעיית התחברות ל-API של המייל באמצעות PHP:

                האם אני יכול לעקוף את ההגבלה הזו באמצעות התחברות ל-google script שמחובר לחשבון?

                בהחלט, משהו כזה:

                const KEY = '**********************';
                function doPost(e) {
                    const { key } = JSON.parse(e.postData.contents);
                    if (key !== KEY) {
                        return ContentService.createTextOutput(JSON.stringify({ error: 'Invalid key' }))
                            .setMimeType(ContentService.MimeType.JSON)
                            .setStatusCode(403);
                    }
                
                    const token = ScriptApp.getOAuthToken();
                    return ContentService.createTextOutput(JSON.stringify({ token })).setMimeType(ContentService.MimeType.JSON);
                }
                
                // GmailApp.getDraft() // don't remove!
                

                אתה שם את הקוד הזה, פורס אותו, ואז אתה פשוט קורא לכתובת של הAPI של גוגל, עם header:

                "Authorization": "Bearer <token>"
                

                הטוקן הזה אמור לעבוד רק לכמה דקות.
                יכול להיות שאפשר לשלב אותו גם בספריה של גוגל, אני לא מכיר את הספריה לPHP.

                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                טיפים

                תגובה 1 תגובה אחרונה
                1

                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום