ข้ามไปที่เนื้อหาหลัก

มาดูวิธีใช้งาน Google oAuth2 สำหรับการใช้งาน Google Ads Libraries ด้วย PHP

ทุกวันนี้ไม่มีใครไม่รู้จัก Google ผู้ให้บริการสำหรับการค้นหาข้อมูลต่างๆ และยังมีบริการในส่วนอื่นๆ อาทิ เช่น Google Maps, Google Adsense, Google Dfp ฯลฯ ซึ่ง Google มองว่าบริการต่างๆ น่าจะสามารถเข้าถึงได้โดยผู้พัฒนา ให้สามารถเรียกใช้งาน API จากบริการของ Google ได้ Google จึงพัฒนา Google client Libraries ออกมาเพื่อนให้เหล่า Dev สามารถเรียกใช้บริการต่างๆ จาก Google ผ่านเว็บไซต์ของตัวเองได้ เช่น การดึงข้อมูลแผนที่ การสร้างรายงานเข้าชมเว็บโดยดึงข้อมูลจาก Analytics ฯลฯ

เพื่อความปลอดภัย Google จำเป็นต้องทำระบบที่มีความซับซ้อนในการใช้งานตามมาด้วย ถึงแม้ว่าจะมีคู่มือออกมาให้อ่าน แต่บางครั้งก็เก่าเกินไป หรือระบบดันพัฒนาไวกว่าคู่มือ ทำให้เหล่าผู้พัฒนาต้องค้นหาข้อมูลเพิ่มเติมเพื่อที่จะแก้ไขจุดเล็กๆ จากการที่ไม่สามารถติดตั้ง และใช้งาน Google client Libraries ได้ เรียกได้ว่า งมเป็นชั่วโมง เป็นวันๆ เมื่อผมได้ผ่านพ้นจุดๆ นี้มาได้ก็ต้องรีบเขียนบทความนี้ไว้เพื่อเตือนความจำตัวเอง และอยากจะให้สิ่งๆ ได้ไปช่วยเหลือคนอื่นๆ ด้วย


มาทำความเข้าใจกันก่อนจะอ่านต่อไป ว่าสิ่งที่จะอ่านต่อไปนี้ คือ การติดตั้งใช้งาน Google Ads Libraries ด้วย oAuth2 ผ่าน PHP สามารถดูข้อมูลเพิ่มเติมได้ที่นี่
https://github.com/googleads/googleads-php-lib

1. ขั้นตอนแรกให้สมัคร Google Account สำหรับคนที่นังไม่มี เมื่อสมัครแล้วก็ให้ไป Google Developers Console
2. เลือกที่ API Manager
3. จากนั้น API ที่ต้องการเรียกใช้งานจากกรณีศึกษาผมต้องการใช้งาน Google DoubleClick For Publishers
4. พอเรากดเปิด ระบบจะบอกให้เราสร้าง Credentails ก่อน โดยต้องกรอกรายละเอียดที่ Tab oAuth Consent Screen ตรงนี้จะเป็นข้อมูลที่แสดงในหน้าขอเข้าถึง API
5. มาที่ Tab Credentails เพื่อสร้าง client ID และ client secret โดยถ้าหากรันด้วย Example Code ให้สร้างเป็น Other ในกรณีที่เรายังไม่มี Redirect URI บางครั้งอาจจะืดสอบรันจาก Localhost
6. นำ client ID และ client secret ไปใส่ที่ googleads-php-lib/src/Google/Api/[product]/Dfp/auth.ini *** [product] อยู่ที่ว่าต้องการเชื่อมต่อไปที่บริการไหน Adwords, Dfp
7. ข้อนี้สำคัญมากๆ จะเห็นว่าในไฟล์  auth.ini ต้องระบุ refresh token ด้วย ถามว่าจะเอาจากไหน? ต้องไปรันไฟล์ googleads-php-libries/examples/[product]/Auth/GetRefreshToken.php คำว่ารันในที่นี้ให้ทำใน Command line เท่านั้นไม่สามารถเปิดดูใน browser ได้ ถ้าต้องการรันผ่าน Browser ให้เอาบรรทัดนี้ออก

// Don't run the example if the file is being included.
if (__FILE__ != realpath($_SERVER['PHP_SELF'])) {
  return;
}


จุดนี้หลายคนจะสับสนมากๆ เพราะแหล่งข้อมูลจะพูดถึงการแก้ปัญหาเวลาไม่สามารถหา refresh token ได้จะพูดถึงว่าให้สร้าง credentails เป็น "Installed application" ซึ่งความจริงมันไม่มีแล้วใน Google Developers Console ต้องใช้เป็น Othet แทน


8. จากนั้นเราจะได้ Refresh Token ก็ไปใส่ในไฟล์ auth.ini
9. ทีนี่เราก็จะสามารถใช้งาน API ของ Google Ads Libraries ได้แล้ว

แหล่งข้อมูล
https://developers.google.com/doubleclick-publishers/docs/authentication
https://github.com/googleads/googleads-php-lib/wiki/Using-OAuth-2.0
https://developers.google.com/identity/protocols/OAuth2
https://groups.google.com/forum/#!topic/google-doubleclick-for-publishers-api/Km1JCy0iJJA

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเพิ่ม Font ภาษาไทยอื่นๆ เข้าไปใช้งานใน MPDF

เนื่องมาจากผมได้มีโอกาสจับงานที่ต้องแปลงหน้าเว็บให้เป็น PDF ลองๆ หาข้อมูลก็ไปเจอเจ้าตัวนี้ MPDF  ซึ่งจริงๆ แล้วก็มีให้ใช้งานอีกหลายๆ ตัว สาเหตุที่เลือกใช้งานตัวนี้เพราะมัน ค่อนข้างจะติดตั้ง และใช้งานง่าย และยังสามารถอ้างอิง CSS เข้ามาช่วยจัดหน้าตาใน PDF ได้อีกด้วย ซึ่งผลที่ได้เพี้ยนไปจากตัวจริงไม่มากครับ แต่ที่ทำให้เลือกใช้งานเพราะการเพิ่มฟ้อนท์ภาษาไทย เข้าไปนั้นค่อนข้างง่ายครับ เลยจะขอมาแนะนำดังนี้

การใช้งาน คำสั่ง file_exists() อย่างเข้าใจ

นี่อาจจะไม่เรื่องใหม่อะไรสำหรับ Professional ทั้งหลาย แต่ว่าสำหรับผมที่เข้าใจ และใช้งานอย่างผิดๆ มาตลอด จนบางทีก็เข้าใจว่า เราเขียนผิด หรือ คำสั่งมันใช้งานไม่ได้ วันนี้จะขอมาพูดถึงเรื่องของคำสั่ง PHP ที่ชื่อ file_exists เป็นคำสั่งที่ใช้สำหรับตรวจสอบไฟล์ว่ามีอยู่จริงหรือไม่? ตัวอย่างการใช้งานแบบผิดๆ ที่ผมใช้ก็คือ file_exists('/images/news/helloworld.jpg'); ผลลัพธ์ที่ได้คือ FALSE ถึงแม้ว้าจะมีไฟล์นั้นอยู่จริงก็ตาม ซึ่งในความเป็นจริงแล้ว การใช้งานที่ถูกต้องคือ file_exists($_SERVER['DOCUMENT_ROOT'] . '/images/news/helloworld.jpg'); จากตัวอย่างที่ถูกต้อง ทำให้เข้าใจแบบง่ายๆ ว่าคำสั่ง file_exists นั้นใช้สำหรับเช็ค path ในโฟลเดอร์จริงๆ เท่านั้น ไม่สามารถเช็คจาก URL ได้ อันนี้เป็นเรื่องง่ายๆ ที่ผมเข้าใจผิดมาอยู่นานเลยทีเดียวเลยต้องขอลงบันทึกเตือนตัวเองไว้อีกที :3

มาเข้าใจ และใช้ Datatable ดึงข้อมูลแบบ Server-side ด้วย PHP, MySQL กันเถอะ

มีช่วงหนึงผมเคยนำ datatable มาพัฒนาในงานแต่เกิดปัญหาเนื่องจากมีข้อมูลขนาดใหญ่ ทำให้เกิดการโหลดในครั้งแรกที่โหลดหน้าเพจนั้นๆ เนื่องจากผมใช้ Ajax ในการโหลดข้อมูลทั้งหมดมาในครั้งเดียวด้วยจำนวนข้อมูล 1000 ขึ้น ซึ่งตอนนั้นผมคิดว่าการทำ preload น่าจะช่วยได้ แต่ว่าถ้า user เกิดเผลอไปกด refesh หรือแก้ไขข้อมูลเวลากลับมาที่หน้าข้อมูลก็ต้องโหลดใหม่อีก ทำให้ผมเลิกใช้ datatable ไปเลย เพราะคิดว่ามันคงไม่เหมาะ แต่ในความจริงแล้ว datatable ก็ได้มีสิ่งที่มาแก้ในจุดนั้นได้ ซึ่งเรียกว่า server-side โดยการที่อนุญาตให้เรา query ข้อมูลออกมาก่อนแล้วส่งมาให้ datatable อ่านข้อมูลในจำนวนที่น้อยลง หลักการก็เหมือนๆ กับบทความการทำสร้าง XML จากข้อมูลขนาดใหญ่นั่นแหละครับ แต่มีเงื่อนไขเพียงแต่ว่า ต้อง Filter และส่งข้อมูลออกมาในรูปแบบที่ตรงตามหลักของ datatable เท่านั้น ( บางครั้งเวลาเข้าไปอ่าน Document หรือดู Example จะงงๆ ว่าอะไรเยอะแยะ ) โดยวันนี้จะมาแนะนำการใช้งานแบบง่ายๆ กันเลย :D