Hướng dẫn php short url function

Trên thực tế chúng ta rất hay gặp những đường link được rút gọn có dạng //goo.gl/xyz, đó là nền tẳng link rút gọn của google, nhưng hiện tại google sẽ bỏ domain goo.gl này đi, họ thông báo chỉ support firebase shorter url mà thôi. Khi vào trang của của goo.gl bạn sẽ nhận đc thông báo sau:

Starting March 30, 2018, we will be turning down support for goo.gl URL shortener. From April 13, 2018 only existing users will be able to create short links on the goo.gl console. You will be able to view your analytics data and download your short link information in csv format for up to one year, until March 30, 2019, when we will discontinue goo.gl. Previously created links will continue to redirect to their intended destination. Please see this blog post for more details.

Tạo app trên google firebase

Đầu tiên bạn vào trang //console.firebase.google.com/u/0/ rồi tạo một app cho mình:

Sau đó điền tên project, đồng ý với điều khoản của google để tạo app.

Cuối cùng bạn vào trang quản trị project của mình, tiếp theo click vào button setting, chọn project setting sẽ nhìn thấy key api bạn cần:

bạn lấy key này đặt vào config của mình:

Tiếp theo vào Dynamic Links điền vào subdomain bạn muốn sử dụng, ở đây mình điền là viblo sẽ dc link short là viblo.page.link, cái này sẽ được sử dụng ở phần sau.

Create short link

Trong bài viết này mình sửa dụng php + laravel làm ví dụ, với framework hay ngôn ngữ khác cách làm cũng tương tự.

function tạo link khá đơn giản như sau:

  public static function makeShortUrl[$fullUrl]
    {
        try {
            $client = New GuzzleHttp\Client[];
            $apiShorter = '//firebasedynamiclinks.googleapis.com/v1/shortLinks?key=' . config['shorty.api_key'];

            $data = $client->post[$apiShorter, [
                'headers' => [
                    'Content-Type' => 'application/json'
                ],
                'json' => [
                    'dynamicLinkInfo' => [
                        'dynamicLinkDomain' => 'viblo.page.link',
                        'link' => $fullUrl
                    ],
                    'suffix' => [
                        'option' => 'SHORT'
                    ]
                ]
            ]];

            $data = $data->getBody[]->getContents[];

            return json_decode[$data]->shortLink;
        } catch [\Exception $exception] {
            \Log::debug[$exception];
        }

        return null;
    }

Trong function này mình sử dụng "guzzlehttp/guzzle": "^6.2", bạn cần add nó vào composer.json sau đó chạy install để lấy thư viện này về.

Thay config['shorty.api_key'] bằng key của bạn lấy dc ở trên

viblo.page.link là link bạn tạo ở phần 1.

Khi tạo thành công nó sẽ trả cho bạn một đường link rút gọn có dạng viblo.page.link/omCi

Lấy số lượng click từ short link

Phần này mình cũng tìm hiểu khá nhiều, nhưng chưa có cách nào lấy dc số lượng click từ google firabase ngay lập tức, mà phải chạy job để nó lấy về theo ngày mà thôi, như google thông báo là cần tới 24 -> 36h để cập nhập số click vào

Trong phần này mình sử dụng thư viện google client, bạn có thể tham khảo cách cài và lấy key ở đây: //developers.google.com/people/quickstart/php

  • Tạo một job có tên là GetClick có nội dung như sau:

Chủ Đề