cloud9でMastodonのAPIを利用する

最近Mastodonの話題が熱い。せっかくだし昔Twitterで動かしていたBOTをMastodonで動かしたく思い、調べてみた。
参考にさせていただいたサイトは下記。

https://nendeb.com/566

まず使用するライブラリを落として解凍する

```
mkdir mastodon
cd mastodon
wget https://github.com/TheCodingCompany/MastodonOAuthPHP/archive/master.zip
unzip master.zip
```

ディレクトリの整理とかいらないファイルの削除とか。

```
cd MastodonOAuthPHP-master/
cp -r ./* ../
cd ../
rm -rf MastodonOAuthPHP-master
rm -rf master.zip
```

###インスタンス名を定義する

```php:Mastodon.php
  public function __construct($domainname = "インスタンスのドメイン") {        
        
        //Set the domain name to use
        $this->setMastodonDomain($domainname);
    }
```

```php:oAuth.php
    /**
     * Our API to use
     * @var type 
     */
    private $mastodon_api_url = "インスタンスのドメイン";

    private $app_config = array(
        "client_name"   => "Mastodon", // ここにクライアント名を
        "redirect_uris" => "urn:ietf:wg:oauth:2.0:oob",
        "scopes"        => "read write",
        "website"       => "https://**********.c9users.io/" // ここに自分のCloud9のURLを
    );
```

###index.phpを作成する

```
touch index.php
```

###index.phpに下記を記述し、アプリを作成する

```php:index.php
<?php
require_once("autoload.php");
$t = new \theCodingCompany\Mastodon();
$token_info = $t->createApp("MastodonAPI利用テスト", "https://**********.c9users.io"); // ここの第1引数が何からツイートしたかの表示部分になる
var_dump($token_info);
```

###https://**********.c9users.io/mastodon　へアクセスし、出てきたclient_idとclient_secretをoAuth.phpへコピペする

```php:oAuth.php
    /**
     * Holds our client_id and secret
     * @var array 
     */
    private $credentials = array(
        "client_id"     => "****************************************************************", // client_id
        "client_secret" => "****************************************************************", // client_secret
        "bearer"        => ""
    );
```

###認証してauthorization tokenを取得する(index.phpの中身は書き換える)

```php:index.php
<?php
require_once("autoload.php");
$t = new \theCodingCompany\Mastodon();
$token_info = $t->createApp("MastodonAPI利用テスト", "https://**********.c9users.io"); // ここの第1引数が何からツイートしたかの表示部分になる
var_dump($token_info);
```

###https://**********.c9users.io/mastodon　へアクセスし、承諾後に出てくるキーをindex.phpへコピペする(index.phpの中身は書き換える)

```php:index.php
<?php
require_once("autoload.php");
$t = new \theCodingCompany\Mastodon();
 
//Request the bearer token
$token_info = $t->getAccessToken("コピペした認証キー");
var_dump($token_info);
```

###https://**********.c9users.io/mastodon　へアクセスし、出てきたbearerをoAuth.phpへコピペする

```php:oAuth.php
    /**
     * Holds our client_id and secret
     * @var array 
     */
    private $credentials = array(
        "client_id"     => "****************************************************************",
        "client_secret" => "****************************************************************",
        "bearer"        => "****************************************************************" // ここへコピーする
    );
```

###登録確認を行う(index.phpの中身は書き換える)
```PHP:index.php
<?php
require_once("autoload.php");
$t = new \theCodingCompany\Mastodon();
 
$bearer_token = $t->authenticate("Mastodonに登録したメアド", "Mastodonに登録したパスワード");
var_dump($bearer_token);
```

うまくいってればきちんとパラメータが表示され、Mastodonの設定→認証されたアプリのところに登録されているはず。

###トゥート関数を作成する

```php:Mastdon.php
/**
 * Posting a new status 仮
 */
public function PostStatuses($toot=null){
 
    if( $toot ){
        //Create our object
        $http = HttpRequest::Instance($this->getApiURL());
        $statusses = $http::Post(
            "api/v1/statuses",
            array(
                'status'    => $toot,
                'visibility'    => 'public'
            ),
            $this->getHeaders()
        );
        if(is_array($statusses) && count($statusses) > 0){
            return $statusses;
        }
    }
    return false;
}
```

###トゥート用のファイルを作成する
```
touch toot.php
```

```php:toot.php
<?php
require_once("autoload.php");
$t = new \theCodingCompany\Mastodon();
//Toot Test
$statusses = $t->PostStatuses("こんにちわ");
var_dump($statusses);
```

最後に
https://**********.c9users.io/mastodon/toot.php
へアクセスすれば、できているはずです。