1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

UDF Get access_token - Authorization (oAuth 2.0) hỗ trợ tương tác Google APIs như Gmail, Youtube...

Thảo luận trong 'Chia sẻ mã nguồn' bắt đầu bởi Huân Hoàng, 29/11/16.

  1. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    639
    Đã được thích:
    1,130
    LỜI NÓI ĐẦU

    Mình là dân không chuyên lập trình, việc trình bày với các thuật ngữ, ngôn ngữ liên quan lập trình mình có thể không chính xác lắm, mong các bạn thông cảm.


    *** Để sử dụng UDF này yêu cầu phải có UDF _HttpRequest tại Topic sau: http://autoitvn.com/threads/update6...ttp-vi-du-hinh-anh-cac-buoc-lam-chi-tiet.267/

    *** Sử dụng _HttpRequest để tương tác với Google APIs thì mình đã có bài viết căn bản ở Topic sau: http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909

    Nếu API của dịch vụ Google cần tương tác chỉ yêu cầu cung cấp API-Key hoặc không yêu cầu gì cả thì rất dễ dàng để ta thực hiện, nhưng nếu có yêu cầu Authorization thì sẽ phức tạp hơn rất nhiều, ví dụ:

    [​IMG]

    Ở hình trên request yêu cầu phải có Authorization với Scope là https://mail.google.com/

    *** Google sử dụng oAuth 2.0 để thực hiện Authorization, để hiểu rõ hơn ta có thể đọc ở trang sau https://developers.google.com/identity/protocols/OAuth2WebServer

    Cơ bản là ta phải Tạo Credentials > oAuth Client ID > Exchange Code > Access Token

    *** Các bước để tạo Credentials thì mình đã nói rõ trong ví dụ 2 của Topic http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909, chỉ khác ở bước cuối, thay vì click chọn API Key thì mình sẽ chọn OAuthClient ID. Nếu bạn chưa biết các bước tạo Credentials thì có thể đọc Spoiler dưới:
    - Các bước đầu giống ví dụ 2 của Topic http://autoitvn.com/threads/api-web-va-autoit.492/#post-1909
    - Ở bước cuối, thay vì click chọn API Key thì mình sẽ chọn OAuthClient ID
    [​IMG]

    [​IMG]

    Ở bước dưới ta sẽ nhấn nút Download để lấy file client_secret:

    [​IMG]

    Nội dung của nó là:

    [​IMG]


    GIỚI THIỆU CÁC HÀM CHÍNH CỦA UDF
    GG_SetUp($sEmail, $sPassword, $sClientID, $sSecretID, $sScope, $sAdditionalParam = '')

    GG_GetToken($sExchangeCode = '')

    • Nếu để $sExchangeCode = '' thì nó sẽ tự động tạo một ExchangeCode mới
    • Trả về một mảng gồm 2 phần tử: [0] access_token, [1] refresh_token

    GG_RefreshToken($sRefreshToken)
    • Trả về một mảng gồm 2 phần tử: [0] access_token, [1] refresh_token
    • Khi một access_token hết hiệu lực, thay vì phải tạo một access_token hoàn toàn mới từ Exchange Code thì bạn có thể dùng hàm này để tạo access_token mới từ refresh_token ứng với access_token cũ

    GG_RevokeToken($AccesToken_or_RefreshToken)
    Huỷ một access_token hoặc refresh_token tương ứng​

    GG_ExchangeCode()
    Tạo ExchangeCode.​


    LƯU Ý
    • Để code đạt hiệu quả tốt nhất thì phải sử dụng tài khoản sạch của bạn (không bị check số đt hay các trường hợp check bảo mật khác)
    • 1 ExchangeCode chỉ tạo được 1 AccessToken duy nhất.
    • 1 Access_Token chỉ có 1 "thời gian sống" ngắn. Nếu access_token không còn sử dụng được nữa thì dùng hàm GG_RefreshToken để tạo mới access_token.
    • Hai cách Authorization với Access_Token:
    1. Thêm vào Request Header (param $Additional_Headers của hàm _HttpRequest): Authorization: Bearer <AccessToken> .Ví dụ:
      Mã (AutoIt):
      _HttpRequest(2, 'https://www.googleapis.com/gmail/v1/users/userId/messages/id', '', '', '', 'Authorization: Bearer 1/fFBGRNJru1FQd44AzqT3Zg')
    2. Nối trực tiếp vào Request URL. Ví dụ:
      Mã (AutoIt):
      _HttpRequest(2, 'https://www.googleapis.com/gmail/v1/users/userId/messages/id?access_token=1/fFBGRNJru1FQd44AzqT3Zg')
    • Ghi chú lại access_token và refresh_token đã tạo vào chỗ nào đó để khi cần thì dùng, không cần phải lặp lại việc tạo Token mới (tất nhiên là phải cùng Scope và Dịch vụ google, còn nếu khác thì phải tạo mới lại hoàn toàn.
    • Luôn phải đặt hàm GG_SetUp ở đầu code để các hàm khác có thể truy xuất đến dữ kiện client_ID và client_secret.
    TẢI UDF
    Nội dung bị ẩn:
    **Nội dung ẩn: Nội dung của khối ẩn này chỉ có thể được nhìn thấy bởi các thành viên của (các nhóm: nhóm Administrative, Moderating, Registered). **
    MỘT SỐ ẢNH VỀ CODE MẪU VÍ DỤ

    [​IMG]

    [​IMG]
     
  2. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    231
    Đã được thích:
    200
    khâm phục bác, nhiều bước vậy mà bác cũng nghiên cứu ra được
     
    kamsamita1 thích bài này.
  3. sgdavid

    sgdavid Thành viên
    • 8/11

    Tham gia ngày:
    23/10/15
    Bài viết:
    28
    Đã được thích:
    12
    Thanks a, coder autoit pro nhất mà e từng biết:autoit:
     
    kamsamita1 thích bài này.
  4. Ngọc Yến

    Ngọc Yến Thành viên
    • 13/23

    Tham gia ngày:
    11/6/16
    Bài viết:
    24
    Đã được thích:
    27
    Phục bác thật. Ỉm ỉm mấy ngày rồi bùng phát cái udf mới luôn =))
     
    kamsamita1 thích bài này.
  5. duc

    duc Thành viên
    • 8/11

    Tham gia ngày:
    28/2/16
    Bài viết:
    38
    Đã được thích:
    22
    bác Huân Hoàng giúp e cái upload video lên ytb được k ạ
     
    kamsamita1 thích bài này.
  6. boybenqn

    boybenqn Thành viên mới
    • 3/6

    Tham gia ngày:
    16/4/16
    Bài viết:
    6
    Đã được thích:
    5
    sao chạy cứ báo lỗi ta "Không lấy được Token" :(:(
     
  7. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    639
    Đã được thích:
    1,130
    Do thằng google nó thay đổi cách thức đăng nhập đó mà thým, nó mới cập nhật cách đây tầm 2 tháng :D Khi nào rảnh iêm sẽ làm lại :p
     
  8. ntprohd

    ntprohd Thành viên mới
    • 3/6

    Tham gia ngày:
    21/1/16
    Bài viết:
    10
    Đã được thích:
    8
    Update đi bác ơi
     
  9. nguyenvl159

    nguyenvl159 Nguyên
    • 3/6

    Tham gia ngày:
    12/7/16
    Bài viết:
    25
    Đã được thích:
    3
    truonghieuhust thích bài này.
  10. Huân Hoàng

    Huân Hoàng Super Moderator Thành viên BQT Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    639
    Đã được thích:
    1,130
    Đã update, yêu cầu _HttpRequest ver14 trở lên :p
     
    locvipvip and dechut like this.
  11. quynhpham92

    quynhpham92 Thành viên mới
    • 1/6

    Tham gia ngày:
    17/4/19
    Bài viết:
    1
    Đã được thích:
    0
    Cái này chỉ áp dụng cho các sản phẩm của Google thôi phải không ạ?.
    Ví dụ như login vào diễn đàn autoitvn.com hay tiki.vn và các trang web ngoài ..... bằng nút "Đăng nhập bằng google" thì có ứng dụng được cái UDF này không ?
     
  12. #Rainy# Hoàng Vũ IT

    #Rainy# Hoàng Vũ IT Hoang Vũ IT
    • 28/34

    Tham gia ngày:
    21/11/16
    Bài viết:
    225
    Đã được thích:
    59
    Nơi ở:
    Quận 12 TP. Hồ Chí Minh
    Tất nhiên là ... không :v
     

Chia sẻ trang này

Đang tải...