টুইটার এপিআই সংস্করণ 1.1 সহ ব্যবহারকারী_টাইমলাইন পুনরুদ্ধার করার জন্য সহজতম পিএইচপি উদাহরণ


292

11 ই জুন 2013 পর্যন্ত টুইটার এপিআই 1.0 1.0 অবসর নেওয়ার কারণে, নীচের স্ক্রিপ্টটি আর কাজ করে না।

// Create curl resource 
$ch = curl_init(); 
// Set url 
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10"); 
// Return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
// $output contains the output string 
$output = curl_exec($ch); 
// Close curl resource to free up system resources 
curl_close($ch);

if ($output) 
{
    $tweets = json_decode($output,true);

    foreach ($tweets as $tweet)
    {
        print_r($tweet);
    }
}

আমি কীভাবে সম্ভব সর্বনিম্ন কোড সহ ব্যবহারকারী_টাইমলাইন (সাম্প্রতিক পরিস্থিতি) পেতে পারি?

আমি এটি খুঁজে পেয়েছি: https://dev.twitter.com/docs/api/1.1/get/statuses/user_Timeline তবে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

"{"errors":[{"message":"Could not authenticate you","code":32}]}"

এখানে অনেকগুলি ক্লাস রয়েছে তবে অনেকগুলি চেষ্টা করার পরেও টুইটারে এই আপডেটগুলির কারণে তাদের কেউই কাজ করছে বলে মনে হচ্ছে না, এর সাথে তাদের মধ্যে বেশ কয়েকটি বেশ কয়েকটি কার্যকারিতা সহ বেশ উন্নত শ্রেণীর রয়েছে যা আমার সত্যিই প্রয়োজন নেই।

পিএইচপি দিয়ে সাম্প্রতিক ব্যবহারকারী স্ট্যাটাসগুলি পাওয়ার সহজ / সংক্ষিপ্ততম উপায় কী?


97
আমি এর উত্তরের জন্য হত্যা করব। তাদের ডকুমেন্টেশন ভয়াবহভাবে খারাপ।
আরসিএনিল

আমি টুইটার এপিআইতে নতুন এবং এটির সাথে কিছুটা লড়াই করছি। আমি নিজেকে অবহিত কোড ব্যবহার করে দেখতে পেলাম।
অ্যান্টনি


@ মার্ক ধন্যবাদ ধন্যবাদ !! এটা সহজ!! এটি আমার পক্ষে প্রথম দিকে কাজ করে না। আমি WAMP চালাচ্ছি। : আমি এই থ্রেডে অনুযায়ী আমার অ্যাপাচি ডিরেক্টরির মধ্যে আমার php.ini করার জন্য একটি পরিবর্তন করতে হবে stackoverflow.com/questions/5444249/...
Adlin লিং

1
: আমি শুধুমাত্র নিচে কোন কার্ল বা অন্য কোন অতিরিক্ত লাইব্রেরি সঙ্গে সমাধান লিখেছিলেন stackoverflow.com/questions/17049821/...
Rauli Rajande

উত্তর:


820

গুরুত্বপূর্ণ দ্রষ্টব্য: ২০১ mid সালের মাঝামাঝি সময়ে টুইটারের এপিআই টোকেন পাওয়ার প্রক্রিয়াটি অনেক বেশি আমলাতান্ত্রিক হয়ে ওঠে। এপিআই টোকেনের একটি সেট সরবরাহ করতে আমার এক কার্যদিবসের সপ্তাহের বেশি সময় লেগেছে, এবং এটি আপনার ছেলে এবং মেয়েদের জন্য প্যাকেগিস্টে 1.2 মিলিয়ন স্থাপনা এবং গিথুবের 1.6k তারকাদের জন্য একটি ওপেন সোর্স প্রকল্পের জন্য , যা তাত্ত্বিকভাবে উচ্চতর অগ্রাধিকার হওয়া উচিত ।

আপনি যদি আপনার কাজের জন্য টুইটার এপিআইয়ের সাথে কাজ করার দায়িত্ব অর্পণ করেন তবে আপনাকে অবশ্যই এই সম্ভাব্য দীর্ঘ সময় অপেক্ষা করতে হবে account ফেসবুক বা ইনস্টাগ্রামের মতো অন্যান্য সামাজিক যোগাযোগ মাধ্যমগুলি বিবেচনা করুন এবং এই বিকল্পগুলি সরবরাহ করুন, কারণ তাদের টোকেনগুলি পুনরুদ্ধারের প্রক্রিয়াটি তাত্ক্ষণিক।


সুতরাং আপনি টুইটার v1.1 এপিআই ব্যবহার করতে চান?

দ্রষ্টব্য: এগুলির জন্য ফাইলগুলি গিটহাবটিতে রয়েছে

সংস্করণ 1.0 শীঘ্রই হ্রাস করা হবে এবং অননুমোদিত অনুরোধ অনুমোদিত হবে না। সুতরাং, আপনার জীবনকে আরও সহজ করার জন্য পিএইচপি ক্লাসের পাশাপাশি আপনাকে এটি করতে সহায়তা করার জন্য এখানে একটি পোস্ট।

1. একটি বিকাশকারী অ্যাকাউন্ট তৈরি করুন: টুইটারে নিজেকে একটি বিকাশকারী অ্যাকাউন্ট সেট আপ করুন

আপনাকে অফিসিয়াল টুইটার বিকাশকারী সাইটটি দেখতে এবং বিকাশকারী অ্যাকাউন্টের জন্য নিবন্ধন করতে হবে। V1.1 API এর জন্য অনুরোধ করার জন্য এটি একটি নিখরচায় এবং প্রয়োজনীয় পদক্ষেপ।

২. একটি অ্যাপ্লিকেশন তৈরি করুন : টুইটার বিকাশকারী সাইটে একটি অ্যাপ্লিকেশন তৈরি করুন

কি? আপনি ভেবেছিলেন আপনি অননুমোদিত অনুরোধ করতে পারবেন? টুইটারের v1.1 এপিআইয়ের সাথে নয়। আপনাকে http://dev.twitter.com/apps এ গিয়ে "অ্যাপ্লিকেশন তৈরি করুন" বোতামটি ক্লিক করতে হবে।

এখানে চিত্র বিবরণ লিখুন

এই পৃষ্ঠায়, আপনি যা চান তার বিবরণ পূরণ করুন। আমার জন্য, এটি কোনও ব্যাপার নয়, কারণ আমি স্প্যাম অনুসারীদের থেকে পরিত্রাণ পেতে কেবলমাত্র অনেকগুলি ব্লক অনুরোধ করতে চেয়েছিলাম। মুল বক্তব্যটি আপনি নিজের অ্যাপ্লিকেশনটির জন্য নিজেকে অনন্য কীগুলির একটি সেট পেতে চলেছেন ।

সুতরাং, অ্যাপ্লিকেশন তৈরি করার বিষয়টি হ'ল নিজেকে (এবং টুইটার) কীগুলির একটি সেট দেওয়া। এইগুলো:

  • গ্রাহক কী
  • গ্রাহক গোপনীয়তা
  • অ্যাক্সেস টোকেন
  • অ্যাক্সেস টোকেন গোপন

এই টোকেনগুলি কীসের জন্য রয়েছে সে সম্পর্কে এখানে কিছুটা তথ্য রয়েছে ।

৩. অ্যাক্সেস টোকেন তৈরি করুন : সফল অনুরোধগুলি করার জন্য আপনার এগুলির প্রয়োজন হবে

OAuth কয়েকটি টোকেনের জন্য অনুরোধ করেছে। সুতরাং আপনার এগুলি আপনার জন্য তৈরি করা দরকার।

এখানে চিত্র বিবরণ লিখুন

নীচে "আমার অ্যাক্সেস টোকেন তৈরি করুন" ক্লিক করুন। তারপরে আপনি আবার নীচে স্ক্রোল করার পরে আপনার কাছে কিছু নতুন উত্পন্ন কী রয়েছে। আপনার এপিআই কলগুলির জন্য আপনাকে এই পৃষ্ঠাটি থেকে চারটি পূর্ববর্তী লেবেলযুক্ত কীগুলি ধরতে হবে, সুতরাং সেগুলি কোথাও একটি নোট তৈরি করুন।

৪. অ্যাক্সেসের স্তর পরিবর্তন করুন : আপনি কেবল পঠন করতে চান না, তাই না?

আপনি যদি এই এপিআইয়ের কোনও শালীন ব্যবহার করতে চান তবে আপনি জিইটি অনুরোধগুলি ব্যবহার করে স্ট্যান্ডার্ড ডেটা পুনরুদ্ধার ব্যতীত অন্য কিছু করছেন যদি আপনার সেটিংসটি পড়ুন এবং লিখুন তবে আপনার সেটিংসটি পরিবর্তন করতে হবে ।

এখানে চিত্র বিবরণ লিখুন

পৃষ্ঠার শীর্ষে "সেটিংস" ট্যাবটি চয়ন করুন।

এখানে চিত্র বিবরণ লিখুন

আপনার অ্যাপ্লিকেশনটিকে পড়ার / লেখার অ্যাক্সেস দিন এবং নীচে "আপডেট" টিপুন।

টুইটার এখানে অ্যাপ্লিকেশন অনুমতি মডেল ব্যবহার করে সে সম্পর্কে আপনি আরও পড়তে পারেন ।


৫. এপিআই অ্যাক্সেসের জন্য কোড লিখুন : আমি এটির বেশিরভাগ কাজ করেছি

আমি উপরের কোডটি কিছু পরিবর্তন এবং পরিবর্তনের সাথে পিএইচপি শ্রেণিতে সংযুক্ত করেছি যাতে আপনার প্রয়োজনীয় অনুরোধগুলি করা খুব সহজ।

এটি OAuth এবং টুইটার ভি 1.1 এপিআই ব্যবহার করে এবং আমি তৈরি করা ক্লাসটি যা আপনি নীচে খুঁজে পেতে পারেন।

require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

আপনার অ্যাপ্লিকেশন থেকে যে কীগুলি আপনি পেয়েছেন সেগুলি তাদের নিজ নিজ জায়গাতে রেখেছেন তা নিশ্চিত করুন।

এর পরে আপনার একটি অনুরোধ করতে চান এমন একটি URL চয়ন করতে হবে। কোন ইউআরএল এবং অনুরোধের ধরণ (পোষ্ট বা জিইটি) চয়ন করতে আপনাকে সহায়তা করতে টুইটারের এপিআই ডকুমেন্টেশন রয়েছে

/** URL for REST request, see: https://dev.twitter.com/docs/api/1.1/ **/
$url = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';

ডকুমেন্টেশনে, প্রতিটি ইউআরএল আপনাকে এটিতে কী দিতে পারে তা জানিয়ে দেয়। যদি আমরা উপরের মতো "ব্লক" ইউআরএল ব্যবহার করি তবে আমি নীচের পোস্টের পরামিতিগুলি পাস করতে পারি:

/** POST fields required by the URL above. See relevant docs as above **/
$postfields = array(
    'screen_name' => 'usernameToBlock', 
    'skip_status' => '1'
);

আপনি এখন এপিআই দিয়ে যা করতে চান সেটি সেট করে রেখেছেন, আসল অনুরোধ করার সময় এসেছে।

/** Perform the request and echo the response **/
$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();

এবং একটি পোষ্ট অনুরোধ জন্য, এটি!

একটি জন্য তাহলে GET অনুরোধ, এটা একটু আলাদা। এখানে একটি উদাহরণ:

/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=J7mbo';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();     

চূড়ান্ত কোড উদাহরণ : আমার অনুসরণকারীদের একটি তালিকার জন্য একটি সাধারণ জিইটি অনুরোধের জন্য।

$url = 'https://api.twitter.com/1.1/followers/list.json';
$getfield = '?username=J7mbo&skip_status=1';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();  

আমি এই ফাইলগুলি @ অভাবনীয় 10 এবং @ রিভারগুলিকে ক্রেডিট দিয়ে গিটহাবের উপরে রেখেছি! আমি আশা করি যে কেউ এটি দরকারী বলে মনে করেন; আমি জানি আমি করেছি (আমি এটি একটি লুপে বাল্ক ব্লক করার জন্য ব্যবহার করেছি)।

এছাড়াও, উইন্ডোতে যারা এসএসএল শংসাপত্র নিয়ে সমস্যায় পড়েছেন তাদের জন্য এই পোস্টটি দেখুন । এই গ্রন্থাগারটি হুডের নীচে সিআরএল ব্যবহার করে যাতে আপনার সিআরএল শংসাপত্রগুলি সম্ভবত সেট আপ করা আছে তা নিশ্চিত করা দরকার। গুগলও আপনার বন্ধু।


4
@ ক্যাফোল্ডার এই পৃষ্ঠার লিঙ্কটি: প্রোফাইলপিকচার ডটকম.ুক / কেচিং- এপিআই- রিসপন্সস- পিপিপি এটি করার সহজ উপায়ের পরামর্শ দেয়। আপনি প্রথম টুইটারে আপনার টুইটার ডেটা কোনও ফাইল বা ডাটাবেজে (মাইএসকিউএল বা মঙ্গোডিবি) লিখেন, তারপরে প্রতিটি পরবর্তী অনুরোধ আপনি ফাইলটির জন্য যে সময়সীমা চান তার বিপরীতে বর্তমান সময়টি পরীক্ষা করে (আপনি ফাইলটির নাম সময়সীমা হিসাবে রাখতে পারেন) এবং যদি ফাইলটি বিদ্যমান থাকে এবং ফাইলের নামটি আপনি চান সময়সীমার মধ্যে থাকে, তবে এপিআই অনুরোধ সম্পাদনের পরিবর্তে ডেটা টানুন। যদি ফাইল বিদ্যমান থাকে তবে সময়সীমা অতিক্রম হয় তবে ফাইলটি মুছুন তারপরে এপিআই অনুরোধটি সম্পাদন করুন।
জিম্বো

7
একবারে ফিরে আসা জসন ডেটা কীভাবে পরিচালনা করবেন তা আমি বুঝতে পারি না। আমি এটিকে পর্দার প্রতিধ্বনি করতে চাই না যেমন প্রতিধ্বনি $ টুইটার -> সেটগেটফিল্ড ($ গেটফিল্ড) -> বিল্ডঅউথ ($ url, $ অনুরোধমাঠোদ) -> সঞ্চালনযোগ্যতা (); অ্যাপলজি, আমি কীভাবে নিউলাইনগুলি করব তা বুঝতে পারি না! আমি $ jsonData = json_decode (itter টুইটার) এর মতো কিছু করতে চাই; তবে এটি কাজ করে না - আমার মনে হয় আমি মৌলিক কিছু মিস করছি কিন্তু পয়সাও নামছে না ...
অ্যাশলে

67
ধন্যবাদ, টুইটারের ডকুমেন্টেশনগুলি একটি বিশৃঙ্খলাবদ্ধ জঞ্জাল, এটি ব্যাপকভাবে সহায়তা করেছে।
জোরেেন

7
এই ক্লাসটি উইন্ডোজটিতে কাজ করার জন্য বেশ কয়েকটি পূর্বশর্ত রয়েছে। আপনার ফাইলটিতে সিআরএল- এর একটি ভার্শনিক সংস্করণ লোড হওয়া php.iniদরকার এবং এটি php.iniব্যবহার করে আপনার ফাইলে সিএ শংসাপত্রগুলি লোড করা দরকার curl.cainfo = path\to\cacert.pem। আপনি সিএ সার্টস পেতে পারেন এখানে
জেক জেড

4
@ জিম্বো আমি কেবল লক্ষ্য করছিলাম যে ডিফল্ট কিছু সিআরএল এক্সটেনশানগুলি উইন্ডোজে বগি এবং প্রতিস্থাপনের প্রয়োজন (অতএব "স্থির" সংস্করণগুলির লিঙ্ক) এবং সিএ শংসাপত্রগুলি লোড না করেই আপনার শ্রেণিটি একটি মিথ্যা ফিরিয়ে দেয়, কার্ল_আরর () হিসাবে রিপোর্ট করে যে `এসএসএল শংসাপত্রের সমস্যা, সিএ সার্টিটি ঠিক আছে কিনা তা যাচাই করুন` এটি CURLOPT_SSL_VERIFYPEER বন্ধ করে এড়ানো যেতে পারে, তবে আমি ভেবেছিলাম যে সিএ সার্টগুলি ব্যবহার করার জন্য আমি মূল নির্দেশাবলী অন্তর্ভুক্ত করব। কিছু লোকের অনুসন্ধানের কয়েক মিনিট সম্ভাব্যভাবে সংরক্ষণের জন্য এটি কেবল অন্তর্ভুক্ত করা হয়েছে।
জেক জেড

137

Dev.twitter.com এ যান এবং একটি অ্যাপ্লিকেশন তৈরি করুন । এটি আপনাকে আপনার প্রয়োজনীয় শংসাপত্র সরবরাহ করবে। এখানে একটি বাস্তবায়ন যা আমি সম্প্রতি পিএইচপি এবং সিআরএল দিয়ে লিখেছি

<?php
    function buildBaseString($baseURI, $method, $params) {
        $r = array();
        ksort($params);
        foreach($params as $key=>$value){
            $r[] = "$key=" . rawurlencode($value);
        }
        return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
    }

    function buildAuthorizationHeader($oauth) {
        $r = 'Authorization: OAuth ';
        $values = array();
        foreach($oauth as $key=>$value)
            $values[] = "$key=\"" . rawurlencode($value) . "\"";
        $r .= implode(', ', $values);
        return $r;
    }

    $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";

    $oauth_access_token = "YOURVALUE";
    $oauth_access_token_secret = "YOURVALUE";
    $consumer_key = "YOURVALUE";
    $consumer_secret = "YOURVALUE";

    $oauth = array( 'oauth_consumer_key' => $consumer_key,
                    'oauth_nonce' => time(),
                    'oauth_signature_method' => 'HMAC-SHA1',
                    'oauth_token' => $oauth_access_token,
                    'oauth_timestamp' => time(),
                    'oauth_version' => '1.0');

    $base_info = buildBaseString($url, 'GET', $oauth);
    $composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
    $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
    $oauth['oauth_signature'] = $oauth_signature;

    // Make requests
    $header = array(buildAuthorizationHeader($oauth), 'Expect:');
    $options = array( CURLOPT_HTTPHEADER => $header,
                      //CURLOPT_POSTFIELDS => $postfields,
                      CURLOPT_HEADER => false,
                      CURLOPT_URL => $url,
                      CURLOPT_RETURNTRANSFER => true,
                      CURLOPT_SSL_VERIFYPEER => false);

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    $twitter_data = json_decode($json);

//print it out
print_r ($twitter_data);

?>

এটি কমান্ড লাইন থেকে চালানো যেতে পারে:

$ php <name of PHP script>.php

2
কোড স্নিপেটের জন্য ধন্যবাদ, নির্দ্বিধায় কাজ করুন। কেবল সমস্যাটি হ'ল পোস্ট কাউন্টের রিটার্ন কীভাবে সেট করবেন তা আমি বের করে আনতে পারি না। এটি কেবল 20 ফেরত আসে এবং আমি টুইটারের সীমা অনুযায়ী 200 পরিমাণ পূর্ণ পরিমাণে পেতে চাই।
ফ্ল্যাটলিন

23
আপনি কিভাবে সেট হবে screen_nameএবং countএই পদ্ধতির সঙ্গে? আমি এটিকে $urlভেরিয়েবলে যুক্ত করার চেষ্টা করেছিলাম তবে ত্রুটিটি "আপনার প্রমাণ করতে পারিনি" got
জাভিয়ের

1
এই কোড দুর্দান্ত কাজ করে! আমি অনুসন্ধান / টুইটগুলি.জসন এপিআই ব্যবহার করতে এটি সংশোধন করার চেষ্টা করছি, তবে আমি সর্বদা প্রতিক্রিয়া পাচ্ছি 'আপনাকে প্রমাণ করতে পারেনি' - কোনও ধারণা?
ক্রিস

1
এই পোস্টটি খুব সহায়ক হয়েছে। আমার কোডটি curl_init()যদিও এর থেকে ফিরে আসবে বলে মনে হচ্ছে না । আমি কয়েকটি উদাহরণ দেখেছি এবং সেগুলি দেখতে খুব সহজ এবং সোজাসাপ্টা এবং ঠিক এই কোডটির মতো এখানে ... আমার বিশেষ কিছু ইনস্টল করার দরকার আছে কি?
jessicaraygun

1
এটি আমার জন্য 26 অক্টোবর 2016-এ কাজ করেছিল The আউটপুটটি আমার প্রত্যাশার চেয়ে কিছুটা জটিল ছিল।
জনসি

61

নদীগুলির দ্বারা আটকানো কোডটি দুর্দান্ত। অনেক ধন্যবাদ! আমি এখানে নতুন এবং মন্তব্য করতে পারছি না, আমি কেবল জাভিভার্ডের প্রশ্নের উত্তর দিতে চাই (আপনি কীভাবে পর্দার নামটি সেট করবেন এবং এই পদ্ধতির সাথে কীভাবে গণনা করবেন?), কারণ আমি এটিকে চিত্রিত করার জন্য অনেক সময় হারিয়েছি বাইরে।

আপনাকে ইউআরএল এবং স্বাক্ষর তৈরি প্রক্রিয়া উভয়ই পরামিতি যুক্ত করতে হবে । একটি স্বাক্ষর তৈরি করা নিবন্ধ যা আমাকে সাহায্য করেছে। আমার কোডটি এখানে:

$oauth = array(
           'screen_name' => 'DwightHoward',
           'count' => 2,
           'oauth_consumer_key' => $consumer_key,
           'oauth_nonce' => time(),
           'oauth_signature_method' => 'HMAC-SHA1',
           'oauth_token' => $oauth_access_token,
           'oauth_timestamp' => time(),
           'oauth_version' => '1.0'
         );

$options = array(
             CURLOPT_HTTPHEADER => $header,
             //CURLOPT_POSTFIELDS => $postfields,
             CURLOPT_HEADER => false,
             CURLOPT_URL => $url . '?screen_name=DwightHoward&count=2',
             CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false
           );

2
আমি এটি যথেষ্ট ভোট দিতে পারবেন না। টুইটারের এপিআই ডকুমেন্টেশনে, এটি আপনাকে মুখে তাকাচ্ছে, তবে এটি কখনও সুপার 'স্পষ্ট' নয়। এই পদ্ধতির buildAuthorizationHeaderফাংশন সঙ্গে জগাখিচুড়ি ? আমি এটি আলাদাভাবে প্রয়োগ করেছি।
মো

আমি এটির সাথে দীর্ঘদিন কাজ করি নি তাই আমার মনে নেই, আপনি যদি এখনও আপনার সমস্যা সমাধান না করে থাকেন তবে আমি পরের দিনগুলিতে এটি সন্ধান করতে পারি।
অভাবনীয় 10

আমি ভাগ্য ছাড়াই স্ট্যাটাস / আপডেট.জসনে পোস্ট পোস্ট করার জন্য আপনার সমাধানটি খাপ খাইয়ে নেওয়ার চেষ্টা করছি, কীভাবে এটি অর্জন করা যায় আপনার কোনও ধারণা আছে?
পেরোহুন্টার

1
@ স্প্রহুন্টার আমার এই সম্পর্কে আরও সন্ধান করার কোন ধারণা নেই। আপনি যদি দু'দিনের মধ্যে কোনও উপায় না খুঁজে পান তবে আমাকে একটি ছবি পাঠান আমি আপনাকে সাহায্য করার চেষ্টা করব।
অভাবনীয় 10

18

অন্যান্য উত্তরে বর্ণিত মত, টোকেন, কী এবং গোপনীয়তা পেতে একটি টুইটার অ্যাপ তৈরি করুন। কোড বেলো ব্যবহার করে, আপনি অনুরোধের পরামিতিগুলিকে এক জায়গা থেকে সংশোধন করতে পারেন এবং টাইপস এবং অনুরূপ ত্রুটিগুলি ( ফাংশনে $requestঅ্যারে পরিবর্তন returnTweet()) এড়াতে পারেন ।

function buildBaseString($baseURI, $method, $params) {
    $r = array();
    ksort($params);
    foreach($params as $key=>$value){
        $r[] = "$key=" . rawurlencode($value);
    }
    return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
}

function buildAuthorizationHeader($oauth) {
    $r = 'Authorization: OAuth ';
    $values = array();
    foreach($oauth as $key=>$value)
        $values[] = "$key=\"" . rawurlencode($value) . "\"";
    $r .= implode(', ', $values);
    return $r;
}

function returnTweet(){
    $oauth_access_token         = "x";
    $oauth_access_token_secret  = "x";
    $consumer_key               = "x";
    $consumer_secret            = "x";

    $twitter_timeline           = "user_timeline";  //  mentions_timeline / user_timeline / home_timeline / retweets_of_me

    //  create request
        $request = array(
            'screen_name'       => 'budidino',
            'count'             => '3'
        );

    $oauth = array(
        'oauth_consumer_key'        => $consumer_key,
        'oauth_nonce'               => time(),
        'oauth_signature_method'    => 'HMAC-SHA1',
        'oauth_token'               => $oauth_access_token,
        'oauth_timestamp'           => time(),
        'oauth_version'             => '1.0'
    );

    //  merge request and oauth to one array
        $oauth = array_merge($oauth, $request);

    //  do some magic
        $base_info              = buildBaseString("https://api.twitter.com/1.1/statuses/$twitter_timeline.json", 'GET', $oauth);
        $composite_key          = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
        $oauth_signature            = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
        $oauth['oauth_signature']   = $oauth_signature;

    //  make request
        $header = array(buildAuthorizationHeader($oauth), 'Expect:');
        $options = array( CURLOPT_HTTPHEADER => $header,
                          CURLOPT_HEADER => false,
                          CURLOPT_URL => "https://api.twitter.com/1.1/statuses/$twitter_timeline.json?". http_build_query($request),
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_SSL_VERIFYPEER => false);

        $feed = curl_init();
        curl_setopt_array($feed, $options);
        $json = curl_exec($feed);
        curl_close($feed);

    return json_decode($json, true);
}

এবং তারপরে কেবল কল করুন returnTweet()


1
অদ্ভুত কাজ @ বুডিদিনো! Dev.twitter.com/apps এ অ্যাপ্লিকেশন তৈরি করেছে এবং আপনার এক্সগুলি oauth_access_token, oauth_access_token_secret, গ্রাহক_কি, ভোক্তা_সিকিট দিয়ে পূর্ণ করেছে। * নোট * যে আপনার "আমার অ্যাক্সেস টোকেন তৈরি করুন" টিপতে হবে এবং এটি উত্পন্ন হতে কয়েক সেকেন্ড সময় নেয় তাই দয়া করে এটি অপেক্ষা করুন।
থিও

@ বুডিডিনো dnt আমাদের কোন লাইব্রেরি অন্তর্ভুক্ত করা প্রয়োজন ??
আনাম

আমি কীগুলি পূরণ করেছি, এটি আমার functions.phpফাইলে ওয়ার্ডপ্রেসে যুক্ত করেছি <?php echo returnTweet(); ?>, একটি এইচটিএমএল ফাইল রেখেছি এবং এটি "অ্যারে" শব্দের আউটপুট দেয় এবং অন্য কিছুই না।
J82

@ দেসি, ফলাফল টুইটগুলির অ্যারে, আপনি তাদের প্রত্যেককে কীভাবে প্রদর্শন করবেন তা আপনার পরিচালনা করা উচিত। ভিতরে কী আছে তা দেখতে মুদ্রণ_আর (রিটার্নটুইট ()) ব্যবহার করে দেখুন। সমস্ত টুইট প্রদর্শন করার এই উদাহরণটি দেখুন: gist.github.com/budidino/9681764#file-stackoverflow-returntweet
বুড়িদিনো

1
আপনি যদি সর্বশেষতম টুইট আনতে চান তবে আপনার $ অনুরোধ অ্যারেটি পরিবর্তন করতে হবে এবং গণনাটি 1 নির্ধারণ করতে হবে Let's আসুন আমরা বলি যে আপনি $ টুইট = রিটার্নটুইট () ব্যবহার করেন; তারপরে আপনি যদি সর্বশেষ টুইটটি প্রদর্শন করতে চান (এই ক্ষেত্রে একমাত্র), আপনি এর মতো কিছু লিখতে পারেন: প্রতিধ্বনি "সর্বশেষ টুইট:"। $ টুইট [0] ["পাঠ্য"]; আপনি যদি টুইটারের টেক্সটটির চেয়ে বেশি কিছু টানতে চান তবে টুইটারের ফিরে আসা কাঠামোটি পরীক্ষা করে দেখুন (উদাহরণস্বরূপ $ ইউজারপ্রাইফাইলআইমেজ URL = $ টুইট [0] ["ব্যবহারকারী"] ["প্রোফাইল_আইমেজ_আরল"])। dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
বুডিডিনো

16

ধন্যবাদ ক্রিস!

এটি ক্যোয়ারীর পরামিতিগুলি ব্যবহার না করেই আমার পক্ষে কাজ করেছিল, যখনই আমি একাধিক পরামিতি ব্যবহার করি তবে এটি আমাকে ত্রুটি দেখিয়েছিল: 32 আপনাকে প্রমাণীকরণ করতে পারে নি।

আমার জন্য সমস্যাটি ছিল, এম্পারস্যান্ড এনকোডিংয়ের মধ্যে। সুতরাং আপনার কোড যেখানে এটি নিম্নলিখিত লাইন

$url .= "?".http_build_query($query);

আমি নীচের নীচের লাইনটি যুক্ত করেছি:

$url=str_replace("&amp;","&",$url);

এবং এটি স্ক্রিন_নাম এবং গণনা যেমন দুটি বা আরও বেশি পরামিতি ব্যবহার করে কাজ করেছে।

পুরো কোডটি এর মতো দেখাচ্ছে:

$token = 'YOUR TOKEN';
$token_secret = 'TOKEN SECRET';
$consumer_key = 'YOUR KEY';
$consumer_secret = 'KEY SECRET';

$host = 'api.twitter.com';
$method = 'GET';
$path = '/1.1/statuses/user_timeline.json'; // api call path

$query = array( // query parameters
    'screen_name' => 'twitterapi',
    'count' => '2'
);

$oauth = array(
    'oauth_consumer_key' => $consumer_key,
    'oauth_token' => $token,
    'oauth_nonce' => (string)mt_rand(), // a stronger nonce is recommended
    'oauth_timestamp' => time(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_version' => '1.0'
);

$oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting
$query = array_map("rawurlencode", $query);

$arr = array_merge($oauth, $query); // combine the values THEN sort

asort($arr); // secondary sort (value)
ksort($arr); // primary sort (key)

// http_build_query automatically encodes, but our parameters
// are already encoded, and must be by this point, so we undo
// the encoding step
$querystring = urldecode(http_build_query($arr, '', '&'));

$url = "https://$host$path";

// mash everything together for the text to hash
$base_string = $method."&".rawurlencode($url)."&".rawurlencode($querystring);

// same with the key
$key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret);

// generate the hash
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));

// this time we're using a normal GET query, and we're only encoding the query params
// (without the oauth params)
$url .= "?".http_build_query($query);
$url=str_replace("&amp;","&",$url); //Patch by @Frewuill

$oauth['oauth_signature'] = $signature; // don't want to abandon all that work!
ksort($oauth); // probably not necessary, but twitter's demo does it

// also not necessary, but twitter's demo does this too
function add_quotes($str) { return '"'.$str.'"'; }
$oauth = array_map("add_quotes", $oauth);

// this is the full value of the Authorization line
$auth = "OAuth " . urldecode(http_build_query($oauth, '', ', '));

// if you're doing post, you need to skip the GET building above
// and instead supply query parameters to CURLOPT_POSTFIELDS
$options = array( CURLOPT_HTTPHEADER => array("Authorization: $auth"),
                  //CURLOPT_POSTFIELDS => $postfields,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

// do our business
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

$twitter_data = json_decode($json);

আশা করি এটি আমার সমস্যার সাথে কারও সাহায্য করবে।


অনেক ধন্যবাদ, আপনার কোড উন্নতি ভাল কাজ করে! একটি প্রশ্ন পুনরায়: "// আরও শক্তিশালী ননস সুপারিশ করা হয়"। কি হতে পারে? সময় ()?
সেবাস্তিয়ান

যে ইশারা জন্য ধন্যবাদ। সেবাস্তিয়ান: ননস হ'ল একক-ব্যবহারের টোকেন যা ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত হওয়া উচিত। mt_rand () উভয়ই খুব সংক্ষিপ্ত (32 বিট) এবং কোনও ক্রিপ্টোগ্রাফিক PRNG নয়। তাত্ত্বিকভাবে, এটি অউথ টোকনকে দুর্বল করে তোলে, তবে আমার মূল উদাহরণ কোডের সরলতার জন্য, আমি পিএইচপি-তে হস্তান্তরিত এবং সহজেই বোধগম্য এমন কিছু ব্যবহার করতে চেয়েছিলাম।
ক্রিস রিভস

ত্রুটি প্রাপ্তি 32. আপনাকে প্রমাণীকরণ করতে পারেনি .. কোনও সাহায্য দয়া করে ??? আমি আপনার উপরের কোডটি ব্যবহার করেছি
সাড্ক

@ ফ্রিউইল, আপনারা দুর্দান্ত ভাই, ধন্যবাদ এটি আমাকে মনোমুগ্ধকর মত কাজ করে, ধন্যবাদ।
বিজয়

9

এই প্রশ্নটি আমাকে অনেক সাহায্য করেছে তবে কী ঘটবে তা বোঝার জন্য আমাকে পুরোপুরি পায়নি। এই ব্লগ পোস্টটি আমাকে এটির মধ্য দিয়ে চলার এক আশ্চর্যজনক কাজ করেছে।

এখানে একসাথে সমস্ত গুরুত্বপূর্ণ বিট রয়েছে:

  • উপরে উল্লিখিত হিসাবে, আপনি আপনার 1.1 এপিআই অনুরোধগুলি স্বাক্ষর করতে হবে। যদি আপনি পাবলিক স্ট্যাটাস পাওয়ার মতো কিছু করছেন তবে আপনি একটি ব্যবহারকারী কী না করে একটি অ্যাপ্লিকেশন কী চাইবেন। আপনি যে পৃষ্ঠায় চান তার সম্পূর্ণ লিঙ্কটি হ'ল: https://dev.twitter.com/apps
  • আপনাকে অবশ্যই সমস্ত প্যারামিটার হ্যাশ করতে হবে, উভয় ওউথ এবং গেম প্যারামিটারগুলি (বা পোস্ট পরামিতি) একসাথে।
  • আপনার প্যারামিটারগুলি হ্যাশ হয়ে যাওয়া ইউআরএল এনকোডড ফর্মটিতে হ্রাস করার আগে অবশ্যই তা বাছাই করতে হবে।
  • আপনাকে কয়েকটি জিনিস একাধিকবার এনকোড করতে হবে - উদাহরণস্বরূপ, আপনি প্যারামিটারগুলির url- এনকোড হওয়া মানগুলি থেকে একটি কোয়েরি স্ট্রিং তৈরি করেন এবং তারপরে আপনি ইউআরএলকে এনকোড করুন এবং পদ্ধতির ধরণ এবং url এর সাথে সম্মিলন করতে পারেন।

আমি সমস্ত মাথা ব্যাথার প্রতি সহানুভূতি জানাই, তাই এগুলি সমস্ত গুটিয়ে দেওয়ার জন্য এখানে কিছু কোড রয়েছে:

$token = 'YOUR TOKEN';
$token_secret = 'TOKEN SECRET';
$consumer_key = 'YOUR KEY';
$consumer_secret = 'KEY SECRET';

$host = 'api.twitter.com';
$method = 'GET';
$path = '/1.1/statuses/user_timeline.json'; // api call path

$query = array( // query parameters
    'screen_name' => 'twitterapi',
    'count' => '2'
);

$oauth = array(
    'oauth_consumer_key' => $consumer_key,
    'oauth_token' => $token,
    'oauth_nonce' => (string)mt_rand(), // a stronger nonce is recommended
    'oauth_timestamp' => time(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_version' => '1.0'
);

$oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting
$query = array_map("rawurlencode", $query);

$arr = array_merge($oauth, $query); // combine the values THEN sort

asort($arr); // secondary sort (value)
ksort($arr); // primary sort (key)

// http_build_query automatically encodes, but our parameters
// are already encoded, and must be by this point, so we undo
// the encoding step
$querystring = urldecode(http_build_query($arr, '', '&'));

$url = "https://$host$path";

// mash everything together for the text to hash
$base_string = $method."&".rawurlencode($url)."&".rawurlencode($querystring);

// same with the key
$key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret);

// generate the hash
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));

// this time we're using a normal GET query, and we're only encoding the query params
// (without the oauth params)
$url .= "?".http_build_query($query);

$oauth['oauth_signature'] = $signature; // don't want to abandon all that work!
ksort($oauth); // probably not necessary, but twitter's demo does it

// also not necessary, but twitter's demo does this too
function add_quotes($str) { return '"'.$str.'"'; }
$oauth = array_map("add_quotes", $oauth);

// this is the full value of the Authorization line
$auth = "OAuth " . urldecode(http_build_query($oauth, '', ', '));

// if you're doing post, you need to skip the GET building above
// and instead supply query parameters to CURLOPT_POSTFIELDS
$options = array( CURLOPT_HTTPHEADER => array("Authorization: $auth"),
                  //CURLOPT_POSTFIELDS => $postfields,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

// do our business
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

$twitter_data = json_decode($json);

6

আপনার যদি OAuth পিএইচপি লাইব্রেরি ইনস্টল করা থাকে তবে আপনাকে অনুরোধটি নিজে তৈরি করার বিষয়ে চিন্তা করার দরকার নেই।

$oauth = new OAuth($consumer_key, $consumer_secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$oauth->setToken($access_token, $access_secret);

$oauth->fetch("https://api.twitter.com/1.1/statuses/user_timeline.json");
$twitter_data = json_decode($oauth->getLastResponse());

print_r($twitter_data);

আরো তথ্যের জন্য, চেক আউট দস্তাবেজ বা তাদের উদাহরণ । আপনি pecl install oauthলাইব্রেরি পেতে ব্যবহার করতে পারেন ।


5

সবার আগে আমি জিম্বো এবং ( তার পোস্ট / টুইটার-এপি-পিএইচপি সহজ লাইব্রেরি) ধন্যবাদ জানাতে চাইছিলাম ।

আপনি যদি "টুইটার-এপিআই-পিএইচপি" পিএইচপি লাইব্রেরি (টুইটারএপিআইএক্সচেঞ্জ.এফপি) দিয়ে জিইটি অনুসন্ধান / টুইটগুলি এপিআই ব্যবহার করতে যাচ্ছেন :

প্রথমত, আপনাকে কেবল "পোষ্ট অনুরোধটি সম্পাদন করুন এবং প্রতিক্রিয়ার প্রতিধ্বনি করুন" কোড অঞ্চলটি মন্তব্য করতে হবে।

কেবলমাত্র "একটি জিইটি অনুরোধ সম্পাদন করুন এবং প্রতিক্রিয়ার প্রতিধ্বনি করুন" কোডটি ব্যবহার করুন এবং প্রতিক্রিয়াটিকে প্রতিধ্বনিত করুন এবং এই দুটি লাইন পরিবর্তন করুন:

$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?screen_name=J7mbo';

প্রতি

$url = 'https://api.twitter.com/1.1/search/tweets.json';
$getfield = '?q=J7mbo';

( এটিকে পরিবর্তন screen_nameকরুন q, এটি :)


আমার এখনও ভাগ্য নেই: /
রিকার্ডো

2

আপনার টুইটারে একটি "অ্যাপ" তৈরি করতে একটি প্রয়োজন হবে (এবং এটি করার জন্য আপনার একটি টুইটার অ্যাকাউন্ট প্রয়োজন)।

তারপরে, টুইটারে অনুমোদিত অনুরোধ করার জন্য আপনাকে OAuth ব্যবহার করতে হবে

সাম্প্রতিক টুইটগুলির তালিকা পেতে আপনি জিইটি স্ট্যাটাসগুলি / ব্যবহারকারীর_টাইমলাইন সংস্থান ব্যবহার করতে পারেন ।


4
দয়া করে, আমাদের জন্য বোকা লোকেরা, ব্যাখ্যা করুন। আপনি ডকুমেন্টেশনের চেয়ে কম না হলেও, অন্তর্দৃষ্টি দিচ্ছেন। আপনি কি দ্বিতীয় HttpRequest()পদক্ষেপের জন্য পিএইচপি এর ফাংশন ব্যবহার করেন? আব্রাহামের টুইটারঅউথ পিএইচপি আছে - github.com/abraham/twitteroauth - গ্রন্থাগার যা এটি করারও কথা রয়েছে, তবে কীভাবে এটি বাস্তবায়ন করা যায় তার একটি উদাহরণ সত্যই সরবরাহ করা হয়নি।
আরসিএনিল

2
github.com/abraham/twitteroauth/blob/master/test.php এর অনেক উদাহরণ আছে বলে মনে হয়!
ম্যাথু রাপাতি

2
@ ম্যাথেররপতি পাতা অনুপস্থিত।
আরএন কুশওয়াহা

0

আপনার টাইমলাইন থেকে নির্দিষ্ট সংখ্যক টুইট পাওয়ার জন্য এখানে একটি সংক্ষিপ্ত বিবরণ। এটি কেবলমাত্র কম কোড সহ অন্যান্য উদাহরণগুলির মতো একই কাজ করে।

কেবল কীগুলি পূরণ করুন এবং $countআপনার পছন্দ অনুসারে সামঞ্জস্য করুন:

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$count = '10';

$oauth = array('count' => $count,
               'oauth_consumer_key' => '[CONSUMER KEY]',
               'oauth_nonce' => md5(mt_rand()),
               'oauth_signature_method' => 'HMAC-SHA1',
               'oauth_timestamp' => time(),
               'oauth_token' => '[ACCESS TOKEN]',
               'oauth_version' => '1.0');

$oauth['oauth_signature'] = base64_encode(hash_hmac('sha1', 'GET&' . rawurlencode($url) . '&' . rawurlencode(implode('&', array_map(function ($v, $k) { return $k . '=' . $v; }, $oauth, array_keys($oauth)))), '[CONSUMER SECRET]&[ACCESS TOKEN SECRET]', true));

$twitterData = json_decode(file_get_contents($url . '?count=' . $count, false, stream_context_create(array('http' => array('method' => 'GET',
                                                                                                                           'header' => 'Authorization: OAuth ' 
                                                                                                                                       . implode(', ', array_map(function ($v, $k) { return $k . '="' . rawurlencode($v) . '"'; }, $oauth, array_keys($oauth))))))));

এই এক বেনামে ফাংশন ব্যবহার করে এবং file_get_contents পরিবর্তে সিআরএল লাইব্রেরি ব্যবহার করে। MD5 হ্যাশ ননসের ব্যবহারটি নোট করুন। প্রত্যেকে time()বোকামির সাথে চলতে দেখা যাচ্ছে , তবে, ওআউথ সম্পর্কিত ওয়েবে বেশিরভাগ উদাহরণগুলি কোনও ধরণের এনক্রিপ্টড স্ট্রিং ব্যবহার করে (যেমন এটি: http://www.sitepPoint.com / বোঝা -আউথ ১/১ )। এটি আমার কাছে আরও বোধগম্য হয়।

আরও দ্রষ্টব্য: বেনাম ফাংশনগুলির জন্য আপনার পিএইচপি 5.3+ প্রয়োজন (যদি আপনার সার্ভার / কম্পিউটার কিছু শীতল যুদ্ধের গুহায় থাকে এবং আপনি এটি আপগ্রেড করতে পারবেন না)।


-1

তাদের স্বাক্ষর জেনারেটর থেকে আপনি curlফর্মের আদেশগুলি তৈরি করতে পারেন :

curl --get 'https://api.twitter.com/1.1/statuses/user_timeline.json' --data 'count=2&screen_name=twitterapi' --header 'Authorization: OAuth oauth_consumer_key="YOUR_KEY", oauth_nonce="YOUR_NONCE", oauth_signature="YOUR-SIG", oauth_signature_method="HMAC-SHA1", oauth_timestamp="TIMESTAMP", oauth_token="YOUR-TOKEN", oauth_version="1.0"' --verbose

-2
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET);

$timelines = $connection->get('statuses/user_timeline', array('screen_name' => 'NSE_NIFTY', 'count' => 100, 'include_rts' => 1));

3
এই কোডটি কী করে সে সম্পর্কে দয়া করে একটি ব্যাখ্যা অন্তর্ভুক্ত করুন, যাতে ওপি এটি থেকে শিখতে পারে।
সার্বারুস

-2

এই থ্রেড এবং বিশেষত বুড়িদিনোকে ধন্যবাদ, কারণ তার কোডই এটি আমার জন্য এনে দিয়েছে। একটি অনুরোধ থেকে কীভাবে JSON ডেটা পুনরুদ্ধার করবেন তা অবদান রাখতে চেয়েছিলেন। বিভিন্ন অনুরোধ সম্পাদনের জন্য কোডের অ্যারে অংশে "// অনুরোধ তৈরি করুন" তে অনুরোধ করুন changes শেষ পর্যন্ত, এটি ব্রাউজারের স্ক্রিনে JSON আউটপুট দেবে

<?php
    function buildBaseString($baseURI, $method, $params) {
    $r = array();
    ksort($params);
    foreach($params as $key=>$value){
        $r[] = "$key=" . rawurlencode($value);
    }
    return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
}

function buildAuthorizationHeader($oauth) {
    $r = 'Authorization: OAuth ';
    $values = array();
    foreach($oauth as $key=>$value)
        $values[] = "$key=\"" . rawurlencode($value) . "\"";
    $r .= implode(', ', $values);
    return $r;
}

function returnTweet(){
    $oauth_access_token         = "2602299919-lP6mgkqAMVwvHM1L0Cplw8idxJzvuZoQRzyMkOx";
    $oauth_access_token_secret  = "wGWny2kz67hGdnLe3Uuy63YZs4nIGs8wQtCU7KnOT5brS";
    $consumer_key               = "zAzJRrPOj5BvOsK5QhscKogVQ";
    $consumer_secret            = "Uag0ujVJomqPbfdoR2UAWbRYhjzgoU9jeo7qfZHCxR6a6ozcu1";

    $twitter_timeline           = "user_timeline";  //  mentions_timeline / user_timeline / home_timeline / retweets_of_me

    //  create request
        $request = array(
            'screen_name'       => 'burownrice',
            'count'             => '3'
        );

    $oauth = array(
        'oauth_consumer_key'        => $consumer_key,
        'oauth_nonce'               => time(),
        'oauth_signature_method'    => 'HMAC-SHA1',
        'oauth_token'               => $oauth_access_token,
        'oauth_timestamp'           => time(),
        'oauth_version'             => '1.0'
    );

    //  merge request and oauth to one array
        $oauth = array_merge($oauth, $request);

    //  do some magic
        $base_info              = buildBaseString("https://api.twitter.com/1.1/statuses/$twitter_timeline.json", 'GET', $oauth);
        $composite_key          = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
        $oauth_signature            = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
        $oauth['oauth_signature']   = $oauth_signature;

    //  make request
        $header = array(buildAuthorizationHeader($oauth), 'Expect:');
        $options = array( CURLOPT_HTTPHEADER => $header,
                          CURLOPT_HEADER => false,
                          CURLOPT_URL => "https://api.twitter.com/1.1/statuses/$twitter_timeline.json?". http_build_query($request),
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_SSL_VERIFYPEER => false);

        $feed = curl_init();
        curl_setopt_array($feed, $options);
        $json = curl_exec($feed);
        curl_close($feed);

    return $json;
}

$tweet = returnTweet();
echo $tweet;

?>

-2

যদি কারও পক্ষে এটি কার্যকর হয় ... আমার ব্লগে আমি সর্বশেষ টুইটগুলি পুনরুদ্ধার করতে, তাদের সর্বাধিক প্রাসঙ্গিক ডেটা বের করতে এবং তারপরে তাদের একটি মাইএসকিউএল ডাটাবেসে সংরক্ষণ করার জন্য নীচের পিএইচপি কোডটি প্রয়োগ করেছি। এটি কাজ করে কারণ আমি এটি আমার ব্লগে পেয়েছি।

"টুইটগুলি" সারণী যেখানে এগুলি সংরক্ষণ করে:

CREATE TABLE IF NOT EXISTS `tweets` (
  `tweet_id` int(11) NOT NULL auto_increment,
  `id_tweet` bigint(20) NOT NULL,
  `text_tweet` char(144) NOT NULL,
  `datetime_tweet` datetime NOT NULL,
  `dayofweek_tweet` char(3) NOT NULL,
  `GMT_tweet` char(5) NOT NULL,
  `shorturl_tweet` char(23) NOT NULL,
  PRIMARY KEY  (`tweet_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=83 ;

get_tweets.php:

<?php
function buildBaseString($baseURI, $method, $params) {
    $r= array();
    ksort($params);
    foreach($params as $key=>$value){
        $r[]= "$key=".rawurlencode($value);
    }
    return $method."&".rawurlencode($baseURI).'&'.rawurlencode(implode('&', $r));
}

function buildAuthorizationHeader($oauth) {
    $r= 'Authorization: OAuth ';
    $values= array();
    foreach($oauth as $key=>$value) {
        $values[]= "$key=\"".rawurlencode($value)."\"";
    }
    $r.= implode(', ', $values);
    return $r;
}

function returnTweets($last_id) {
    $oauth_access_token         = "2687912757-vbyfJA483SEyj2HJ2K346aVMxtOIgVbsY4Edrsw";
    $oauth_access_token_secret  = "nIruzmR0bXqC3has4fTf8KAq4pgOceiuKqjklhroENU4W";
    $api_key                    = "ieDSTFH8QHHPafg7H0whQB9GaY";
    $api_secret                 = "mgm8wVS9YP93IJmTQtsmR8ZJADDNdlTca5kCizMkC7O7gFDS1j";
    $twitter_timeline           = "user_timeline";  //[mentions_timeline/user_timeline/home_timeline/retweets_of_me]
    //create request
    $request= array(
        'screen_name'       => 'runs_ES',
        'count'             => '3',
        'exclude_replies'   => 'true'
        );
    if (!is_null($last_id)) { //Add to the request if it exits a last_id
        $request['since_id']= $max_id;
    }
    $oauth = array(
        'oauth_consumer_key'        => $api_key,
        'oauth_nonce'               => time(),
        'oauth_signature_method'    => 'HMAC-SHA1',
        'oauth_token'               => $oauth_access_token,
        'oauth_timestamp'           => time(),
        'oauth_version'             => '1.0'
        );
    //merge request and oauth to one array
    $oauth= array_merge($oauth, $request);
    //do some magic
    $base_info=                 buildBaseString("https://api.twitter.com/1.1/statuses/$twitter_timeline.json", 'GET', $oauth);
    $composite_key=             rawurlencode($api_secret).'&'.rawurlencode($oauth_access_token_secret);
    $oauth_signature=           base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
    $oauth['oauth_signature']=  $oauth_signature;
    //make request
    $header= array(buildAuthorizationHeader($oauth), 'Expect:');
    $options= array(CURLOPT_HTTPHEADER => $header,
                    CURLOPT_HEADER => false,
                    CURLOPT_URL => "https://api.twitter.com/1.1/statuses/$twitter_timeline.json?". http_build_query($request),
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_SSL_VERIFYPEER => false);
    $feed= curl_init();
    curl_setopt_array($feed, $options);
    $json= curl_exec($feed);
    curl_close($feed);
    return $json;
}

function parse_tweettext($tweet_text) {
    $text= substr($tweet_text, 0, -23);
    $short_url= substr($tweet_text, -23, 23);
    return array ('text'=>$text, 'short_url'=> $short_url);
}

function parse_tweetdatetime($tweetdatetime) {
    //Thu Aug 21 21:57:26 +0000 2014 Sun Mon Tue Wed Thu Fri Sat
    $months= array('Jan'=>'01', 'Feb'=>'02', 'Mar'=>'03', 'Apr'=>'04', 'May'=>'05', 'Jun'=>'06', 
                    'Jul'=>'07', 'Aug'=>'08', 'Sep'=>'09', 'Oct'=>'10', 'Nov'=>'11', 'Dec'=>'12');
    $GMT= substr($tweetdatetime, -10, 5);
    $year= substr($tweetdatetime, -4, 4);
    $month_str= substr($tweetdatetime, 4, 3);
    $month= $months[$month_str];
    $day= substr($tweetdatetime, 8, 2); 
    $dayofweek= substr($tweetdatetime, 0, 3);
    $time= substr($tweetdatetime, 11, 8);
    $date= $year.'-'.$month.'-'.$day;
    $datetime= $date.' '.$time;
    return array('datetime'=>$datetime, 'dayofweek'=>$dayofweek, 'GMT'=>$GMT);
    //datetime: "YYYY-MM-DD HH:MM:SS", dayofweek: Mon, Tue..., GMT: +####
}

//First check in the database the last id tweet:
$query= "SELECT MAX(tweets.id_tweet) AS id_last FROM tweets;";
$result= exec_query($query);
$row= mysql_fetch_object($result);
if ($result!= 0 && mysql_num_rows($result)) { //if error in query or not results
    $last_id= $row->id_last;
}
else {
    $last_id= null;
}

$json= returnTweets($last_id);
$tweets= json_decode($json, TRUE);

foreach ($tweets as $tweet) {
    $tweet_id= $tweet['id'];
    if (!empty($tweet_id)) { //if array is not empty
        $tweet_parsetext= parse_tweettext($tweet['text']);
        $tweet_text= utf8_encode($tweet_parsetext['text']);
        $tweet_shorturl= $tweet_parsetext['short_url'];
        $tweet_parsedt= parse_tweetdatetime($tweet['created_at']);
        $tweet_datetime= $tweet_parsedt['datetime'];
        $tweet_dayofweek= $tweet_parsedt['dayofweek'];
        $tweet_GMT= $tweet_parsedt['GMT'];
        //Insert the tweet into the database:
        $fields = array(
            'id_tweet' => $tweet_id,
            'text_tweet' => $tweet_text,
            'datetime_tweet' => $tweet_datetime,
            'dayofweek_tweet' => $tweet_dayofweek,
            'GMT_tweet' => $tweet_GMT,
            'shorturl_tweet' => $tweet_shorturl
            );
        $new_id= mysql_insert('tweets', $fields);
    }
} //end of foreach
?>

টুইটগুলি সংরক্ষণ করার জন্য ফাংশন:

function mysql_insert($table, $inserts) {
    $keys = array_keys($inserts);
    exec_query("START TRANSACTION;");
    $query= 'INSERT INTO `'.$table.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $inserts).'\')';
    exec_query($query);
    $id= mysql_insert_id();
    if (mysql_error()) {
        exec_query("ROLLBACK;");
        die("Error: $query");
    }
    else {
        exec_query("COMMIT;");
    }
    return $id;
}

'এটি কাজ করে কারণ এটি আমার ব্লগে পেয়েছি' আমার পছন্দের একটি। আপনার পোস্টটি আসল প্রশ্নের উত্তর দেয় না। এছাড়াও আপনি যে পিএইচপি কোড ব্যবহার করছেন তা খারাপ মানের আছে। এখানে কিছুটা পড়ুন phptherightway.com । বিশেষত ডিবি সম্পর্কে
ম্যাকিয়েজ পাপ্রোকি

এছাড়াও আপনি আপনার সমস্ত কী এবং টোকেনগুলি সর্বজনীন করে দিয়েছেন তাই কেউ যদি এটি গ্রহণ করে এবং আপনার টুইটার অ্যাকাউন্ট হ্যাক করে তবে অবাক হবেন না!
13: 12 এ গারেটলিঞ্চ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.