Dariel Pratama
Dariel Pratama

Reputation: 1675

tmhOauth update_with_media using hashtag forbidden

i am using tmhOauth library to post status to twitter.

why I got 403 when i try update_with_media with a hashtag inside it. below is full code.

session_start();
require 'tmhOAuth.php';

$tmhOAuth = new tmhOAuth(array(
    'consumer_key'              => 'MYKEY',
    'consumer_secret'           => 'MYSECRET',
    'curl_ssl_verifypeer'       => false
));

if(isset($_GET['oauth_verifier'])){
    $tmhOAuth->config['user_token']  = $_SESSION['oauth']['oauth_token'];
    $tmhOAuth->config['user_secret'] = $_SESSION['oauth']['oauth_token_secret'];

    $code = $tmhOAuth->request(
        'POST',
        $tmhOAuth->url('oauth/access_token', ''),
        array(
          'oauth_verifier' => $_GET['oauth_verifier']
        )
    );

    if($code == 200){
        $_SESSION['access_token'] = $tmhOAuth->extract_params($tmhOAuth->response['response']);

        $tmhOAuth->config['user_token']  = $_SESSION['access_token']['oauth_token'];
        $tmhOAuth->config['user_secret'] = $_SESSION['access_token']['oauth_token_secret'];

        $base64_data = file_get_contents($_SESSION['twitter_image_data']);

        $status = <<<EOD

You can see yourself at Catholic U, too! Go to somelink.com to check out this cool app!
#hashtag
EOD;

        echo strlen($status);
        $params = array(
            'media[]' => "{$base64_data};type=image/jpeg;filename=myimage.jpg",
            'status'  => $status
        );

        $response = $tmhOAuth->user_request(array(
            'method' => 'POST',
            'url' => $tmhOAuth->url("1.1/statuses/update_with_media"),
            'params' => $params,
            'multipart' => true
        ));

        print_r($response);

        if($response == 200){
            ?>
            <pre>Your image has been uploaded to twitter. this window will be closed in 3 seconds...</pre>
            <script>
                setTimeout(function(){
                    window.close();
                }, 3000);
            </script>
            <?php
        }

        unset($_SESSION['oauth']);
        unset($_SESSION['twitter_image_data']);
    }
}

anyway to debug it? $response only return response number. please help

Upvotes: 1

Views: 136

Answers (1)

Verhaeren
Verhaeren

Reputation: 1661

You are having a 403 error which happens when accessing the page or resource you were trying to reach is forbidden for some reason. You should check for url errors and make sure you're specifying an actual web page file name and extension, not just a directory.

Upvotes: 1

Related Questions