2012-10-25 29 views
20

Mã của tôi ở bên dưới. Dịch vụ rút ngắn URL hoạt động nhưng không phải khi tôi chèn $POST. Có ai biết làm thế nào để sửa lỗi này tôi nhìn vào mã?Google API - URL Shortener với PHP

// This is the URL you want to shorten 
$longUrl = 'http://www.mysite.com/XXXXX/XX/$_POST['qrname']'; 

// Get API key from : http://code.google.com/apis/console/ 
$apiKey = 'MyAPIKey'; 

$postData = array('longUrl' => $longUrl, 'key' => $apiKey); 
$jsonData = json_encode($postData); 

$curlObj = curl_init(); 

curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url'); 
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curlObj, CURLOPT_HEADER, 0); 
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json')); 
curl_setopt($curlObj, CURLOPT_POST, 1); 
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData); 

$response = curl_exec($curlObj); 

// Change the response json string to object 
$json = json_decode($response); 

curl_close($curlObj); 

echo 'Shortened URL is: '.$json->id; 
+0

Xóa hoặc nhận xét echo 'URL rút gọn là:'. $ Json-> id; sau khi kiểm tra. ! Nó hoạt động. –

+1

Tôi không biết nơi bạn tìm thấy mã này trong tài liệu API, nhưng cảm ơn! – Macbernie

Trả lời

11

Hãy thử như sau

$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname'];

trên sẽ làm việc.

+8

Vấn đề của bạn là không có gì về cURL, đó là về các biến ghép và chuỗi trong PHP, xem http://php.net/manual/de/language.types.string.php –

+0

Tôi có thể biết tại sao tôi không thể sử dụng mã Php của OP và rút ngắn url? Nó trả lại cho tôi thông báo lỗi 'domain": "usageLimits", "reason": "dailyLimitExceededUnreg", "message": "Giới hạn hàng ngày cho việc sử dụng chưa được xác thực đã vượt quá. "Tôi muốn kiểm tra Http Referrer của tôi, Quota, mọi thứ đều tốt ... – Mavichow

5

bạn đang chuyển biến php giữa các dấu ngoặc đơn để nó sẽ không được phân tích cú pháp. vượt qua nó giữa dấu ngoặc kép như

$longUrl = "http://www.mysite.com/XXXXX/XX/$_POST['qrname']"; 

HOẶC concatinate như thế này

$longUrl = 'http://www.mysite.com/XXXXX/XX/'.$_POST['qrname']; 
+2

Tôi thích câu trả lời này hơn Hackableweb vì nó không chỉ giải quyết vấn đề, mà còn nói với OP, *** Lý do tại sao ***! –

1

Đừng có đủ điểm danh tiếng chưa bình luận, nhưng tôi đã làm việc này tốt bằng cách thay thế dòng:

echo 'Shortened URL is: '.$json->id; 

với:

$shortLink = get_object_vars($json); 
echo "Shortened URL is: ".$shortLink['id']; 

Nó có thể chỉ là cài đặt php của tôi, nhưng dòng ban đầu tiếp tục ném một 500 Lỗi nội bộ cho tôi.

6

Bạn có một chìa khóa, nhưng bạn không sử dụng nó một cách chính xác

Bạn nên thêm nó vào url, không gửi chìa khóa trong bài

https://www.googleapis.com/urlshortener/v1/url?key='.$apiKey 

Vui lòng kiểm tra https://developers.google.com/url-shortener/v1/url/insert

+4

Điều này giải quyết nó cho tôi, một số tài liệu hiện có đã lỗi thời. – MarcF

6
$longUrl = "http://www.xxxxxxx.com"; 
    $postData = array('longUrl' => $longUrl); 
    $jsonData = json_encode($postData); 

    //4 
    $curlObj = curl_init(); 
    curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key=yourappkey'); 
    curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($curlObj, CURLOPT_HEADER, 0); 
    curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json')); 
    curl_setopt($curlObj, CURLOPT_POST, 1); 
    curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData); 

    //5 
    $response = curl_exec($curlObj); 

    $json = json_decode($response); 
//  echo "<pre>"; 
// print_r($json);exit; 
    //6 
    curl_close($curlObj); 

    //7 
    if(isset($json->error)){ 
     echo $json->error->message; 
    }else{ 
     echo $json->id; 
    } 
0

Hãy thử với mã này. Tôi đang làm việc cho tôi.

$api_key = 'YOUR_KEY'; 
$request_data = array(
    'longUrl' => 'YOUR_LONG_URL' 
); 

$curl_obj = curl_init(sprintf('%s/url?key=%s', 'https://www.googleapis.com/urlshortener/v1', $api_key)); 
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl_obj, CURLOPT_POST, true); 
curl_setopt($curl_obj, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, json_encode($request_data)); 
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYHOST, false); 

$response = curl_exec($curl_obj); 
$json = json_decode($response); 
curl_close($curl_obj); 

var_dump($json); 
die();