0

ゴール:

私は iOS の写真/エンターテイメント アプリを構築していますが、非常に単純な目標があります。Facebook に写真をアップロードし、Facebook の Open Graph ストーリーを使用して写真を共有することです (例: "[ユーザー] [動詞] [アプリ名] を使用して写真を投稿する] 」)。

(iOS 6 ではこれがネイティブに許可されていないことが判明しましたSLComposeViewController。許可されることを望んでいました。ブー。)

状況:

私は堅牢な Web スペースを持っていないし、それも望んでいないので、ユーザーがタイムライン (など) で Open Graph ストーリーをクリックした場合、Facebook の写真にリンクするだけでよいと思います。

写真をアップロードして、その URL を取得することはできますが、Open Graph ストーリーを機能させることができません。私がいる場所は次のとおりです。

Facebook アルバムへの写真のアップロード: OK

FBRequestiOS SDKの のrequestForPhotoUploadメソッド (9 月 17 日現在の最新バージョン) を使用し、 を使用して結果を記録しphotopostますbatchEntryName。これは、基本的に FB Open Graph チュートリアルからそのまま引用したものです。

写真URL取得:OK

ここではFBRequestrequestForGraphPath方法を使用します - ここでも基本的に FB OG チュートリアルに従っています。取得した URL の例を次に示します。

https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg

オープン グラフ ストーリーの公開:機能しません

これにより、次のように OG HTTP リクエストを作成します。

https://<MY_SITE>.herokuapp.com/repeater.php?fb:app_id=<MY_FB_APP_ID>
&og:type=<APP_NAMESPACE>:photo
&og:title=a+rad+photo
&og:description=%22a+rad+photo%22
&og:image=https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg
&og:url=https://sphotos-b.xx.fbcdn.net/hphotos-ash3/<long_number_string_with_underscores>_n.jpg
&body=a+rad+photo

しかし、これはうまくいきません。私が遭遇する問題はベテランには明らかかもしれません: FB の画像がog:typeofを返しているwebsite(これは FB のページの静的な OG タグから派生している必要がありますか?)、したがって OG ストーリーは失敗します。

ここで(デバッガーから)私のOG結果を取得できると思います:

https://graph.facebook.com/120073804807493

(また、OG リクエスト全体を として返そうとしましたog:urlが、それは Web サーバーの空白のページにリンクするだけです。以下の repeater.php コードを参照してください。)

それで...どうすればいいですか?どうすればこれを機能させることができますか? ビルドしているのは iOS アプリだけで、ユーザーのフォト アルバムに投稿することだけが目的の場合、画像をホストして表示するためだけに Web プロパティ全体をスピンアップする必要があるのでしょうか?!

詳細情報: repeater.php のソースは次のとおりです (参照: FB OG チュートリアル)。

<?php
function curPageURL() {
 $pageURL = 'http://';
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>

<html>
  <head prefix="og: http://ogp.me/ns# product: http://ogp.me/ns/product#">
    <meta property="fb:app_id" content="<?php echo strip_tags($_REQUEST['fb:app_id']);?>">
      <meta property="og:url" content="<?php echo strip_tags($_REQUEST['og:url']);?>">
      <meta property="og:type" content="<?php echo strip_tags($_REQUEST['og:type']);?>">
      <meta property="og:title" content="<?php echo strip_tags($_REQUEST['og:title']);?>">
      <meta property="og:image" content="<?php echo strip_tags($_REQUEST['og:image']);?>">
      <meta property="og:description" content="<?php echo strip_tags($_REQUEST['og:description']);?>">
  </head>
    <body>
      <?php echo strip_tags($_REQUEST['body']);?>
    </body>
</html>
4

1 に答える 1

1

多くの調査の結果、残念ながら、Facebook にアップロードした写真を Open Graph オブジェクトとして使用することはできないと思います。Facebook のページは、写真の 1 つを Open Graph オブジェクトにするのに十分なほど動的にマークアップされていないため (当然のことですが)、独自の作業を行っています.. ;)

(iOS 6.1 または 7.0 では、このようなことが許可されるのではないかと強く思っていますが、SLRequest が流行するにつれて、この需要が急上昇することを想像しなければなりません..)

将来これに遭遇する可能性のある他の人のためのアイデア:

  • ストレート アップロードとアルバム名を使用して、オープン グラフのストーリーを模倣できる巧妙な方法がいくつかあります。チュートリアルでカバーされていない技術的な内容については、私の他の Stack 投稿を確認してください: Facebook iOS SDK: Cannot specify an album using FBRequest's requestForUploadPhoto:
  • Web 開発のスキルが中程度でも、Facebook の Heroku 統合を見逃さないでください (Facebook アプリの設定ページからアクセスできます) - https://developers.facebook.com/apps
  • 特に多くの写真を扱っている場合は、Parse が Instagram のクローンをオープンソース化してくれたことを祝福してくれました - https://parse.com/anypic - はい、それは WEB と iPhone の両方ですあなたが見るソースコード!それを Heroku サーバーにドロップしていじり始めれば、大規模で社交的な何かが必要な場合は油で調理することになります。
于 2012-09-19T04:58:28.990 に答える