using imgur api v3 to upload images anonymously using php

后端 未结 3 2045
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-24 00:23

I am planning to upload images to imgur anonymously using its api, i registered my application in the anonymous upload category and got client id and client secret, How to u

相关标签:
3条回答
  • 2020-12-24 01:04

    Sending the client_id in a post variable is the problem. It needs to be sent in the request header. Also, you're requesting a JSON response, but trying to parse it as XML.

    <?php
    
    $client_id = "FILLMEIN";
    $image = file_get_contents("img/cool.jpg");
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id));
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => base64_encode($image)));
    
    $reply = curl_exec($ch);
    curl_close($ch);
    
    $reply = json_decode($reply);
    printf('<img height="180" src="%s" >', $reply->data->link);
    

    update 1

    Live functional example with and source based on this code with debug output.

    0 讨论(0)
  • 2020-12-24 01:09

    found the error, I need to send authorization details as header, eg code

    <?php
    $client_id = 'xxxxxxxx';
    
    $file = file_get_contents("test-image.png");
    
    $url = 'https://api.imgur.com/3/image.json';
    $headers = array("Authorization: Client-ID $client_id");
    $pvars  = array('image' => base64_encode($file));
    
    $curl = curl_init();
    
    curl_setopt_array($curl, array(
       CURLOPT_URL=> $url,
       CURLOPT_TIMEOUT => 30,
       CURLOPT_POST => 1,
       CURLOPT_RETURNTRANSFER => 1,
       CURLOPT_HTTPHEADER => $headers,
       CURLOPT_POSTFIELDS => $pvars
    ));
    
    $json_returned = curl_exec($curl); // blank response
    echo "Result: " . $json_returned ;
    
    curl_close ($curl); 
    
    ?>
    
    0 讨论(0)
  • 2020-12-24 01:28

    If you have problem with above script, try the curl skip verified SSL like this:

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    0 讨论(0)
提交回复
热议问题