【PHP】Facebook GraphAPI を使って写真記事を投稿する方法

# [Facebook GraphAPI](https://github.com/facebook/php-graph-sdk)

今回は[Facebook GraphAPI](https://github.com/facebook/php-graph-sdk) を使って写真記事を投稿する方法を解説します。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/213065/58f54b7b-751f-9b57-486c-1b1f2488227d.png)

投稿されている解説記事がどれも古かったので永久(有効期限3年くらい)保存版として残すことにします。

# 環境
**"Windows 10"**で投稿する方法を解説します。

# 準備

### [PHPをインストール](https://sastd.com/php-easy-environment/)

長くなるので[こちらの記事](https://sastd.com/php-easy-environment/)をご参照ください。

### [Composerをインストール](https://qiita.com/mikoski01/items/266469535e860312145d)

長くなるので[こちらの記事](https://qiita.com/mikoski01/items/266469535e860312145d)をご参照ください。

### [Facebook Deveroperに登録](http://www.i-diffuser.jp/manual/320/)

長くなるので[こちらの記事](http://www.i-diffuser.jp/manual/320/)をご参照ください。

### [Facebook PHP Graph SDKをダウンロード](https://github.com/facebook/php-graph-sdk)

<a href="https://github.com/facebook/php-graph-sdk"><img src="https://qiita-image-store.s3.amazonaws.com/0/213065/f7822131-817c-5946-af73-82631ba33f6e.png" width="460px"></a>

[Facebook PHP Graph SDK(.zip)をダウンロードする。](https://github.com/facebook/php-graph-sdk)
ダウンロードしたzipを展開する。

![3.png](https://qiita-image-store.s3.amazonaws.com/0/213065/9bdcd3cc-a67d-71b2-bd6f-e15d24e9733b.png)

展開したフォルダ内にあるFacebookフォルダの上の階層にソースコードと画像ファイルを追加する。
`C:\(ダウンロードした場所)\php-graph-sdk-5.x\php-graph-sdk-5.x\src`

当記事では`C:\Users\wafuu\Downloads\php-graph-sdk-5.x\php-graph-sdk-5.x\src`です。

![4.PNG](https://qiita-image-store.s3.amazonaws.com/0/213065/d1866460-1826-b9ba-2552-d7dc77445840.png)


ソースコードを追加する。
**"app_id"("aaaaaaaaaa"の箇所)は"アプリID"**
**"app_secret"("bbbbbbbbbb"の箇所)は"app secret"**
**"$fb->post関数"("cccccccccc"の箇所)は"ページアクセストークン"**
に書き換えます。

※**"アプリID"**と**"app secret"**の確認方法は[**こちらの記事**](http://www.i-diffuser.jp/manual/320/)をご参照ください。
※**"ページアクセストークン"**は[**こちらのページ**](https://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Did%2Cname&version=v3.1)に記載されています。

```php5:main.php
<?php
require __DIR__ . '\\Facebook\\autoload.php';

$fb = new \Facebook\Facebook([
    "app_id"=>"aaaaaaaaaa",
    "app_secret"=>"bbbbbbbbbb",
    "default_graph_version"=>"v2.10",
]);

  $data = [
    'message' => 'My awesome photo upload example.',
    'source' => $fb->fileToUpload('photo.jpg'),
  ];
  
  try {
    $response = $fb->post('/me/photos', $data, "cccccccccc");
  }
  catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
  }
  catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
  }
  
  $graphNode = $response->getGraphNode();
  
  echo 'Photo ID: ' . $graphNode['id'];

?>
```

出力する画像ファイルを追加する。
![photo.jpg](https://qiita-image-store.s3.amazonaws.com/0/213065/e1748735-eaa9-61d3-478f-1aab0a353d7d.jpeg)

これで準備が出来ました。
![2.png](https://qiita-image-store.s3.amazonaws.com/0/213065/bee37d56-24c1-1838-f725-336e386fa3f6.png)

コマンドプロンプトで`php main.php`と実行します。

```:コマンドプロンプト
C:\Users\wafuu\Downloads\php-graph-sdk-5.x\php-graph-sdk-5.x\src>php main.php
Photo ID: 111111111111
```

無事に投稿できました。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/213065/58f54b7b-751f-9b57-486c-1b1f2488227d.png)