teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

7

加筆修正

2017/05/05 12:37

投稿

退会済みユーザー
answer CHANGED
@@ -37,3 +37,7 @@
37
37
  ・・・と、あくまでドキュメントなどから総合的にひねり出したもので、
38
38
  一切コーディングしてないからてきとーですみません。
39
39
 
40
+ Qiitaさんの記事、日本語訳があるので、
41
+ こちらもどうぞ。
42
+ [4, Facebook API 公式ドキュメント翻訳 PHP SDK について - Qiita](http://qiita.com/AtsukiTak/items/dfadaaea45df8007f801)
43
+ (4番だけじゃなく1~4全部。)

6

見直し

2017/05/05 12:37

投稿

退会済みユーザー
answer CHANGED
@@ -1,30 +1,39 @@
1
- [ユーザープロフィールへ写真アップロード](https://developers.facebook.com/docs/php/howto/example_upload_photo)
1
+ これまでコメントやり取りを踏まえて、
2
- を見る、ファイル単品のアップロードが想定れてるfileToUpload()ではないかと思われます
2
+ 全面的に書き直しますこをお許し下さい。
3
3
 
4
- [Photo Upload with Graph API](https://developers.facebook.com/docs/graph-api/photo-uploads)
5
- Publishing a multi-photo story
4
+ 複数画像を伴ったアップロード方法の実装例を2つ見つけましたが、
5
+ どちらもAPIバージョンが古そうです。
6
6
 
7
+ [PHPで複数の画像をfacebookに投稿する方法 - [facebook/Webサービス] ぺんたん info](http://pentan.info/web_service/facebook/php_image_albums.html)
7
- も参照すると、
8
+ [Facebook 3枚連続で画像投稿するよ(PHP) | Tips Note by TAM](https://www.tam-tam.co.jp/tipsnote/program/post114.html)
8
9
 
10
+ 共通して言えるのは、
11
+ ・まずアルバムを作り、アルバムのidを取得する。
9
- 0. 必要なファイルを一つずつファイルアップロードし、media_fbid記録しておく
12
+ ・アバムのidエンドポイントに使ってファイルアップロードのポストする
10
- 0. 記録しておいたmedia_fbidを元にphoto storyしてまとめるrequestを送信
13
+ いう流れのようです
11
14
 
15
+ 手順の中で使用するアクセストークンについては、
16
+ [アクセストークン - Facebookログイン](https://developers.facebook.com/docs/facebook-login/access-tokens/)
17
+ に詳しい解説があり、ユーザー用のアクセストークンとページ用のアクセストークンは別だそうです。
18
+ PHPからアクセストークンを取得する方法については、
19
+ [Facebookでログイン - ウェブSDK](https://developers.facebook.com/docs/php/howto/example_facebook_login#fbcallback)
12
- みたい見えます
20
+ サンプルコードがあります。
13
21
 
14
- ```php
22
+ アルバムの作成は、
23
+ [Graph API Reference: Album /album-id](https://developers.facebook.com/docs/graph-api/reference/v2.9/album)
24
+ [User Albums](https://developers.facebook.com/docs/graph-api/reference/user/albums)
15
- $Img_src=implode(",", $img_array);
25
+ を見るとエンドポイントは`'/{user-id}/albums'`っぽいですが、
16
- $post['source']= $facebook->fileToUpload($Img_src);
26
+ アクセストークンを取得したあとなら`'/me/albums'`でも良かったりしないかな。
17
27
  ```
18
- でなく
19
- ```php
20
- foreach($img_array as $img) {
21
- $media[] = '{"media_fbid":"' . $facebook->fileToUpload($img) . '"}';
28
+ $response = $fb->post('/me/albums', ['name' => 'アルバム名', 'message' => 'アルバムの説明']);
22
- }
23
- $post['attached_media'] = $media;
24
29
  ```
25
- とかやってfileToUpload()のリターン値を保持したものを次のpost()に流用するような
30
+ とか。
26
- sourceとしないのは、もう既ファイルはップロード済みだか
31
+ $response->idにアルバムidが得れるはず。
27
- アップロード済みのを添付するために、attached_mediaなのかなと推察。
28
32
 
33
+ 写真のアップロードは、
29
- キュメントを見ているだけで、実際に動かしたことはありません。あしからず。実装経験者さんからのイスが付くこをお祈り申上げます。)
34
+ エンポイントを`'/ムid/photos'`とし
35
+ アップロードしたいファイルの数だけ繰り返しアップロードすればよし。
30
36
 
37
+ ・・・と、あくまでドキュメントなどから総合的にひねり出したもので、
38
+ 一切コーディングしてないからてきとーですみません。
39
+

5

誤字の訂正

2017/05/05 12:34

投稿

退会済みユーザー
answer CHANGED
File without changes

4

見直し

2017/05/05 07:32

投稿

退会済みユーザー
answer CHANGED
@@ -18,7 +18,7 @@
18
18
  でなく
19
19
  ```php
20
20
  foreach($img_array as $img) {
21
- $media[] = $facebook->fileToUpload($img);
21
+ $media[] = '{"media_fbid":"' . $facebook->fileToUpload($img) . '"}';
22
22
  }
23
23
  $post['attached_media'] = $media;
24
24
  ```

3

加筆修正

2017/05/05 07:29

投稿

退会済みユーザー
answer CHANGED
@@ -26,5 +26,5 @@
26
26
  sourceとしないのは、もう既にファイルはアップロード済みだから、
27
27
  アップロード済みのを添付するために、attached_mediaなのかなと推察。
28
28
 
29
- (ドキュメントを見ているだけで、実際に動かしたことはありません。あしからず)
29
+ (ドキュメントを見ているだけで、実際に動かしたことはありません。あしからず。実装経験者さんからのアドバイスが付くことをお祈り申し上げます。
30
30
 

2

加筆修正

2017/05/05 07:27

投稿

退会済みユーザー
answer CHANGED
@@ -5,6 +5,26 @@
5
5
  Publishing a multi-photo story
6
6
 
7
7
  も参照すると、
8
+
8
9
  0. 必要なファイルを一つずつファイルアップロードし、media_fbidを記録しておく。
9
10
  0. 記録しておいたmedia_fbidを元にphoto storyとしてまとめるrequestを送信。
11
+
10
- みたいに見えますね。
12
+ みたいに見えますね。
13
+
14
+ ```php
15
+ $Img_src=implode(",", $img_array);
16
+ $post['source']= $facebook->fileToUpload($Img_src);
17
+ ```
18
+ でなく
19
+ ```php
20
+ foreach($img_array as $img) {
21
+ $media[] = $facebook->fileToUpload($img);
22
+ }
23
+ $post['attached_media'] = $media;
24
+ ```
25
+ とかやってfileToUpload()のリターン値を保持したものを次のpost()に流用するような。
26
+ sourceとしないのは、もう既にファイルはアップロード済みだから、
27
+ アップロード済みのを添付するために、attached_mediaなのかなと推察。
28
+
29
+ (ドキュメントを見ているだけで、実際に動かしたことはありません。あしからず)
30
+

1

加筆修正

2017/05/05 07:26

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,10 @@
1
1
  [ユーザープロフィールへの写真のアップロード](https://developers.facebook.com/docs/php/howto/example_upload_photo)
2
2
  を見ると、ファイル単品のアップロードが想定されているfileToUpload()ではないかと思われます。
3
+
4
+ [Photo Upload with Graph API](https://developers.facebook.com/docs/graph-api/photo-uploads)
3
- foreach()ループを回してはダメなのですか?
5
+ Publishing a multi-photo story
6
+
7
+ も参照すると、
8
+ 0. 必要なファイルを一つずつファイルアップロードし、media_fbidを記録しておく。
9
+ 0. 記録しておいたmedia_fbidを元にphoto storyとしてまとめるrequestを送信。
10
+ みたいに見えますね。