Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有人能帮我在twitter上发布状态吗?_Php_Oauth_Twitter_Twitter Oauth - Fatal编程技术网

Php 有人能帮我在twitter上发布状态吗?

Php 有人能帮我在twitter上发布状态吗?,php,oauth,twitter,twitter-oauth,Php,Oauth,Twitter,Twitter Oauth,我基本上遵循了这个教程 我的一切都在工作,我可以看到屏幕名称,当我调用它,以及我的状态时间线,但由于某种原因,我不能张贴状态。我在互联网上到处找,每个人都用同样的方式,但我不能让我的工作 这是我的twitter_oauth.php <?php require("twitteroauth.php"); session_start(); if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']

我基本上遵循了这个教程

我的一切都在工作,我可以看到屏幕名称,当我调用它,以及我的状态时间线,但由于某种原因,我不能张贴状态。我在互联网上到处找,每个人都用同样的方式,但我不能让我的工作

这是我的twitter_oauth.php

<?php
require("twitteroauth.php");
session_start();

if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){
    $twitteroauth = new TwitterOAuth('consumerkey', 'otherkey', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
    //request the access token
    $access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
    $_SESSION['access_token'] = $access_token;
    $user_info = $twitteroauth->get('account/verify_credentials');
    //useful for seeing array key names
    //print_r($user_info);

    mysql_connect('localhost', 'usernamr', 'password');
    mysql_select_db(' database_twitter');

    if(isset($user_info->error)){
        header('Location: twitter_login.php');
    }else{
        //find the user by its ID
        $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'twitter' AND oauth_uid = ". $user_info->id);
        $result = mysql_fetch_array($query);

        //if it doesnt exist add
        if(empty($result)){
            $query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username, oauth_token, oauth_secret) VALUES ('twitter', {$user_info->id}, '{$user_info->screen_name}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}')");
            $query = mysql_query("SELECT * FROM users WHERE id = " .mysql_insert_id());
            $result = mysql_fetch_array($query);
        }else{
            // Update the tokens
        $query = mysql_query("UPDATE users SET oauth_token = '{$access_token['oauth_token']}', oauth_secret = '{$access_token['oauth_token_secret']}' WHERE oauth_provider = 'twitter' AND oauth_uid = {$user_info->id}");
        }

            $_SESSION['id'] = $result['id'];
            $_SESSION['username'] = $result['username'];
            $_SESSION['oauth_uid'] = $result['oauth_uid'];
            $_SESSION['oauth_provider'] = $result['oauth_provider'];
            $_SESSION['oauth_token'] = $result['oauth_token'];
            $_SESSION['oauth_secret'] = $result['oauth_secret'];                        



            header('Location: twitter_update.php');
    }
}else{
    header('Location:twitter_login.php');
}
?>

您正在
twitter\u oauth.php
中将访问令牌保存到
$\u会话['access\u token']
中,但在
twitter\u update.php
中您正在使用
$\u会话['oauth\u token']

twitter\u oauth.php
在作为用户向API发出请求之前,还应该使用access\u令牌构建一个新的
twitter\u oauth
对象


在获取访问令牌失败的情况下,您也不会有错误处理。

非常感谢。我会在几分钟内检查它。我只是尝试了很多不同的方法,一定错过了最明显的方法。您是oauth的作者吗?我是这个特定PHP库的作者,但我不是oauth规范的作者。我检查了您所说的内容,并更改了会话名称,因此它可以工作,因为我可以获取任何我无法发布的内容。您需要发布什么状态?我甚至检查了我的twitter帐户连接,它显示我的应用程序正在发送我在post状态下输入的任何内容,但它不会发送推特?如果您设置
$result=$twitterouth->post(…)
var\u dump($result)
推特返回了什么?
<?php
require("twitteroauth.php");
session_start();
?>
<h2>Hello <?php
if(!empty($_SESSION['username'])){
    echo '@' .$_SESSION['username'];
}else{
    echo 'Guest';
}

 if(!empty($_SESSION['username'])){  
     $twitteroauth = new TwitterOAuth('key', 'key', $_SESSION['oauth_token'], $_SESSION['oauth_secret']);  
     $status_timeline = $twitteroauth->get('statuses/home_timeline', array('count' => 40));
    $content = $twitteroauth->get('account/verify_credentials');

    $twitteroauth->get('users/show', array('screen_name' => 'abraham'));
    //$twitteroauth->post('statuses/update', array('status' => 'Testing out the twitter api with oauth'));
     //print_r($status_timeline);
     $twitteroauth->post('statuses/update', array('status' => "hello world"));


 }
?>
</h2>