0

ツイッターのユーザー名とパスワードを持っています。私が望むのは、クライアントが管理者側から新しい記事を追加するときに、その URL を自動ツイートにしたいということです。クライアントが記事を追加するたびに twitter にログインする手間をかけたくありません。Abraham twitteroauth ライブラリを使用して自動ログインする方法はありますか。ありがとうございました

4

1 に答える 1

0

Twitter では、最初にクライアント アプリを承認する必要があります。その後、特定の機会 (新しい記事の公開など) で自動ツイートできるようになります。詳細については、私が作成した Chyrp の Twitter モジュールを参照してください。Abraham の Twitter oAuth ライブラリを使用します。abraham's library archive には、これを少しクリアする明確な例もあります。

一方、クライアントのサイトで使用している CMS/ブログは、投稿がいつ作成されるかを知るためにフック (コールバック) を提供し、それに応じて Tweet メソッドを呼び出す必要があります。

リンクされた Chyrp の Twitter モジュールの例:

1) Twitterで承認:

static function admin_chweet_auth($admin) {
    if (!Visitor::current()->group->can("change_settings"))
        show_403(__("Access Denied"), __("You do not have sufficient privileges to change settings."));

    # If the oauth_token is old redirect
    if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token'])
    Flash::warning(__("Old token. Please refresh the page and try again."), "/admin/?action=chweet_settings");

    # New TwitteroAuth object with app key/secret and token key/secret from SESSION
    $tOAuth = new TwitterOAuth(C_KEY, C_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
    $access_token = $tOAuth->getAccessToken($_REQUEST['oauth_verifier']);

    # Save access tokens locally for future tweeting.
    $config = Config::current();
    $config->set("chweet_oauth_token", $access_token["oauth_token"]);
    $config->set("chweet_oauth_secret", $access_token["oauth_token_secret"]);
    $config->set("chweet_user_id", $access_token["user_id"]);
    $config->set("chweet_username", $access_token["screen_name"]);

    unset($_SESSION['oauth_token']);
    unset($_SESSION['oauth_token_secret']);

    if (200 == $tOAuth->http_code)
        Flash::notice(__("Chweet was successfully Authorized to Twitter."), "/admin/?action=chweet_settings");
    else
        Flash::warning(__("Chweet couldn't be authorized."), "/admin/?action=chweet_settings");
}

2)add_post (trigger)

public function add_post($post) {
   fallback($chweet, (int) !empty($_POST['chweet']));
   SQL::current()->insert("post_attributes",
                    array("name" => "tweeted",
                          "value" => $chweet,
                          "post_id" => $post->id));

   if ($chweet and $post->status == "public")
       $this->tweet_post($post);
}

3) Tweet-it メソッド (省略)。

public function tweet_post($post) {
    $tOAuth = new TwitterOAuth(C_KEY, C_SECRET, $config->chweet_oauth_token, $config->chweet_oauth_secret);
    $user = $tOAuth->get("account/verify_credentials");
    $response = $tOAuth->post("statuses/update", array("status" => $status));
    return $response;
}
于 2012-08-03T06:22:58.910 に答える